Russian Qt Forum
Ноябрь 26, 2024, 01:24 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Картинка на форме диалога. Как?  (Прочитано 7778 раз)
smartchecker
Гость
« : Май 19, 2012, 13:30 »

Мне нужно на форму диалога поместить некую сущность в виде белого прямоугольника, при клике на котором будет открываться QFileDialog.
После выбора картинки в FileDialog'е эта картинка должна рисоваться вместо белого прямоугольника.
Какой элемент поместить на форму?
Записан
V1KT0P
Гость
« Ответ #1 : Май 19, 2012, 13:40 »

Мне нужно на форму диалога поместить некую сущность в виде белого прямоугольника, при клике на котором будет открываться QFileDialog.
После выбора картинки в FileDialog'е эта картинка должна рисоваться вместо белого прямоугольника.
Какой элемент поместить на форму?
QLabel
Записан
smartchecker
Гость
« Ответ #2 : Май 19, 2012, 13:50 »

У QLabel нет click().
Записан
V1KT0P
Гость
« Ответ #3 : Май 19, 2012, 14:06 »

У QLabel нет click().
Зато есть "virtual void mouseReleaseEvent(QMouseEvent *ev)".
Записан
trot
Гость
« Ответ #4 : Май 19, 2012, 14:15 »

Обычную кнопку и стилизовать её.
Записан
smartchecker
Гость
« Ответ #5 : Май 19, 2012, 14:23 »

Обычную кнопку и стилизовать её.
Например как?
Обычную кнопку можно сделать flat?
Записан
iroln
Гость
« Ответ #6 : Май 19, 2012, 16:07 »

Не надо никаких кнопок стилизованных, используй QLabel и не парь себе мозг. Для отлова события клика мишкой можно использовать EventFilter либо как тут сказали, унаследовать класс и переопределить mouseReleaseEvent.
Записан
smartchecker
Гость
« Ответ #7 : Май 20, 2012, 12:42 »

Не надо никаких кнопок стилизованных, используй QLabel и не парь себе мозг. Для отлова события клика мишкой можно использовать EventFilter либо как тут сказали, унаследовать класс и переопределить mouseReleaseEvent.
А как унаследованный элемент воткнуть в окно, которое сделано в designer'е?
Как я понимаю, если наследовать, то писать надо что-то типа
Код
C++ (Qt)
void QLabelExtended::mouseReleaseEvent(QMouseEvent *)
{
   emit clicked();
}
Записан
V1KT0P
Гость
« Ответ #8 : Май 20, 2012, 12:52 »

А как унаследованный элемент воткнуть в окно, которое сделано в designer'е?
Взять виджет от которого наследовался, разместить в дизайнере, правой кнопкой по виджету и выбрать "Преобразовать в..". Там добавляешь имя образованного класса и имя заголовочного файла. Нажимаешь преобразовать и если сделал правильно то все будет работать.
Записан
smartchecker
Гость
« Ответ #9 : Май 20, 2012, 16:13 »

А как унаследованный элемент воткнуть в окно, которое сделано в designer'е?
Взять виджет от которого наследовался, разместить в дизайнере, правой кнопкой по виджету и выбрать "Преобразовать в..". Там добавляешь имя образованного класса и имя заголовочного файла. Нажимаешь преобразовать и если сделал правильно то все будет работать.
Сделал класс, на QLabel нажал ПКМ, выбрал Promote to и в Promoted class name вписал свой класс.
Но сигнал click() так и не появился.
Записан
V1KT0P
Гость
« Ответ #10 : Май 20, 2012, 16:27 »

Сделал класс, на QLabel нажал ПКМ, выбрал Promote to и в Promoted class name вписал свой класс.
Но сигнал click() так и не появился.
Ты в заголовочном файл добавил сигнал click()? Если нет то откуда же он возьмется. Если да, то выложи минимальный проект.
Записан
smartchecker
Гость
« Ответ #11 : Май 20, 2012, 16:32 »

Ты в заголовочном файл добавил сигнал click()? Если нет то откуда же он возьмется. Если да, то выложи минимальный проект.
Я позаимствовал код из поста Elfebet
http://forum.vingrad.ru/index.php?showtopic=215040&view=findpost&p=1537598
Записан
V1KT0P
Гость
« Ответ #12 : Май 20, 2012, 16:36 »

Я позаимствовал код из поста Elfebet
http://forum.vingrad.ru/index.php?showtopic=215040&view=findpost&p=1537598
Там сигнал называется clicked. Его анализатор кода не видит или даже компилятор?
Записан
smartchecker
Гость
« Ответ #13 : Май 20, 2012, 16:40 »

Там сигнал называется clicked. Его анализатор кода не видит или даже компилятор?
А как он должен называться? Вроде ж так и должен...
у QPushButton он называется clicked()
Записан
V1KT0P
Гость
« Ответ #14 : Май 20, 2012, 16:42 »

Там сигнал называется clicked. Его анализатор кода не видит или даже компилятор?
А как он должен называться? Вроде ж так и должен...
у QPushButton он называется clicked()
Скинь минимальный проект(без лишнего кода), так я сразу ответ дам, а иначе можно только гадать что там не так.
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.126 секунд. Запросов: 21.