Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 26.04.2018
Сообщений: 30

QCheckBox запоминающей состояние. т.е. нажали - отобразились одна картинка, нажали еще раз все пропало

11.05.2021, 14:16. Показов 1804. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть программа в которой существует кнопка загрузки изображения, необходимо добавить CheckBox (запоминающей состояние) при нажатии на который на картинке(в Qlabel) подсвечивались дефекты(поиск дефектов осуществляется кенни), т.е. нажали - отобразились дефекты, нажали еще раз все пропало.
Пока удалось реализовать вывод картинки с "дефектами" при нажатие на кнопку+"дефект"(CheckBox- с галочкой), но обновлять картинку в label после "снятия" галочки, автоматически не получилось. Подскажите пожалуйста как это можно сделать.


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
void MainWindow::on_pushButton_clicked()
{
   uint imageWidth;
    uint imageHeight;
    ushort * imageData, *tmp;
    QByteArray ba;
    QString fp = QFileDialog::getOpenFileName();
    const char *c_str;
 
    qDebug() << "MainWindow::1";
        ba = fp.toLocal8Bit();
        qDebug() << "MainWindow::2";
        c_str = ba.data();
        qDebug() << "MainWindow::3";
        tmp = p_tiff->openFile(c_str, &imageWidth, &imageHeight);
    qDebug() << "MainWindow::4 " << imageWidth << imageHeight;
 
 
    imageData = new ushort[imageWidth * imageHeight];
    memcpy(imageData, tmp, imageWidth * imageHeight * 2);
    qDebug() << "MainWindow::5";
 
    QImage image(imageWidth, imageHeight, QImage::Format_Indexed8);
    qDebug() << "MainWindow::6";
 
    quint8 * line = image.scanLine(0);
    int stride = image.bytesPerLine();
    qDebug() << "MainWindow::7";
 
    qint32 pixel = 0;
    for ( int y = 0; y < imageHeight; ++y, line += stride)
    {
        quint8 * pix = line;
        for ( int x = 0; x < imageWidth; ++x, pix += 1)
        {
            pixel  = imageData[(y*imageWidth)+x]/255;
 
            if (pixel > 255)
            {
                pixel = 255;
            }
            if (pixel < 0)
            {
                pixel = 0;
            }
 
            pix[0] = pixel;
        }
    }
    qDebug() << "MainWindow::8";
 
    Mat img = QImage2Mat(image);
    if (img.empty())
        {
            qDebug() << "Image Loading error";
            return;
        }
 
 
 //   Mat tresh;
//    threshold (img,tresh,160,198,THRESH_BINARY_INV);
 
 //   GaussianBlur(img,tresh,Size(3,7),0,0,BORDER_DEFAULT);
 
if (ui->defect->isChecked()){
 
///////////// Canny детектор границ  /////////////////////////////////
 
    Canny(img,imageCanny,14,10);
 
/////////     Расширение границ, которые нашел Canny   /////////////////////////////////
 
     Mat kernel = getStructuringElement(MORPH_RECT,Size(5,5));
     dilate(imageCanny, imgDil,kernel);
 
     getContours(imgDil, img);
}
 
////    imshow("Image", imageCanny);
 
//////////////    Размер картинки  //////////////////
 
        QSize picSize = ui->image->size();
        QPixmap originalPixmap = QPixmap::fromImage(Mat2QImage(img));
        QPixmap scaledPixmap = originalPixmap.scaled(picSize, Qt::KeepAspectRatio);
 
////////////   Вывод картинки в QLabel  /////////////
 
        ui->image->setPixmap(scaledPixmap);
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.05.2021, 14:16
Ответы с готовыми решениями:

Поставить счетчик, сколько раз нажали на эту кнопку
Я начинающий программист на javascript опыта почти не имею. Создал сайт на html и хочу поставить счетчик на кнопку. С помощью js можно...

Нажали один раз в программе button1 и больше сегодня её нажать нельзя.
Столкнулся с такой проблемой нужно,что бы при нажатии баттон1 юзер уже не мог нажать её сегодня.Без разницы каким способом(реестр ии что-то...

Кнопка-"счетчик", подсчитывающая, сколько раз на нее уже нажали
Интересуюсь вопросом, как сделать такую кнопку, чтобы она считала, сколько раз на нее уже нажали и в зависимости от этого на экран...

5
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
11.05.2021, 16:36
stateChanged?
0
0 / 0 / 0
Регистрация: 26.04.2018
Сообщений: 30
11.05.2021, 16:50  [ТС]
Добавлено через 1 минуту
Получается я делаю путь к слоту
C++
1
2
3
4
void MainWindow::on_defect_stateChanged(int arg1)
{
    
}
а, что писать внутри....

C++
1
2
3
4
5
6
7
8
9
if (ui->defect->isChecked()){
///////////// Canny детектор границ  /////////////////////////////////
    Canny(img,imageCanny,14,10);
/////////     Расширение границ, которые нашел Canny   /////////////////////////////////
     Mat kernel = getStructuringElement(MORPH_RECT,Size(5,5));
     dilate(imageCanny, imgDil,kernel);
 
     getContours(imgDil, img);
}

Если писать, что то такое то выдает ошибку...
C++
1
2
3
4
5
6
7
8
9
10
11
void MainWindow::on_defect_stateChanged(int arg1)
{
    if (ui->defect->isChecked()){
///////////// Canny детектор границ  /////////////////////////////////
    Canny(img,imageCanny,14,10);
/////////     Расширение границ, которые нашел Canny   /////////////////////////////////
     Mat kernel = getStructuringElement(MORPH_RECT,Size(5,5));
     dilate(imageCanny, imgDil,kernel);
 
     getContours(imgDil, img);
}
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
11.05.2021, 18:32
Какую ошибку? Состояние в слоте определяешь по переданному параметру, а не isChecked.
0
0 / 0 / 0
Регистрация: 26.04.2018
Сообщений: 30
11.05.2021, 21:56  [ТС]
C++
1
2
OpenCV: terminate handler is called! The last OpenCV error is:
OpenCV(4.1.0) Error: Assertion failed (dims <= 2 && step[0] > 0) in cv::Mat::locateROI, file C:\opencv\opencv\sources\modules\core\src\matrix.cpp, line 757
Он выдает ошибку когда я перед открытие изображения, отмечаю галочку в чекбоксе
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
11.05.2021, 23:56
Это не проблема Checkbox тогда.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.05.2021, 23:56
Помогаю со студенческими работами здесь

Надо что бы при нажатии на какой либо Image с картинкой, картинка перекидывалась в пусто Image, а Image на который нажали исчезал.
Имеется 4 Image в 3 из них находятся картинки, а 4 пустой. Надо что бы при нажатии на какой либо Image с картинкой, картинка перекидывалась...

На экране ноутбука HP появились вертикальные полосы (зарябил экран), после чего нажали кнопочку "перезагрузки" и всё
Для начала хотел бы всех поздравить с НОВЫМ ГОДОМ! А теперь опишу свою проблему. Где-то в 23:55 на экране ноутбука HP появились...

Условие - кнопку нажали
Здравствуйте! У меня имеется массив из 20 кнопок. Требуется вывести messagebox - &quot;Вы нажали кнопку i&quot;, если пользователь...

Проверить, что нажали enter
Как проверить, что нажатая кнопка является enter? BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); ...

Отследить где нажали в TreeView
Всем привет, можна как то отследить в каком месте нажали на TreeView и с этого места потом вывести какую нибудь компоненту к примеру button...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru