Название: Картинка на форме диалога. Как? Отправлено: smartchecker от Май 19, 2012, 13:30 Мне нужно на форму диалога поместить некую сущность в виде белого прямоугольника, при клике на котором будет открываться QFileDialog.
После выбора картинки в FileDialog'е эта картинка должна рисоваться вместо белого прямоугольника. Какой элемент поместить на форму? Название: Re: Картинка на форме диалога. Как? Отправлено: V1KT0P от Май 19, 2012, 13:40 Мне нужно на форму диалога поместить некую сущность в виде белого прямоугольника, при клике на котором будет открываться QFileDialog. QLabelПосле выбора картинки в FileDialog'е эта картинка должна рисоваться вместо белого прямоугольника. Какой элемент поместить на форму? Название: Re: Картинка на форме диалога. Как? Отправлено: smartchecker от Май 19, 2012, 13:50 У QLabel нет click().
Название: Re: Картинка на форме диалога. Как? Отправлено: V1KT0P от Май 19, 2012, 14:06 У QLabel нет click(). Зато есть "virtual void mouseReleaseEvent(QMouseEvent *ev)".Название: Re: Картинка на форме диалога. Как? Отправлено: trot от Май 19, 2012, 14:15 Обычную кнопку и стилизовать её.
Название: Re: Картинка на форме диалога. Как? Отправлено: smartchecker от Май 19, 2012, 14:23 Обычную кнопку и стилизовать её. Например как?Обычную кнопку можно сделать flat? Название: Re: Картинка на форме диалога. Как? Отправлено: iroln от Май 19, 2012, 16:07 Не надо никаких кнопок стилизованных, используй QLabel и не парь себе мозг. Для отлова события клика мишкой можно использовать EventFilter либо как тут сказали, унаследовать класс и переопределить mouseReleaseEvent.
Название: Re: Картинка на форме диалога. Как? Отправлено: smartchecker от Май 20, 2012, 12:42 Не надо никаких кнопок стилизованных, используй QLabel и не парь себе мозг. Для отлова события клика мишкой можно использовать EventFilter либо как тут сказали, унаследовать класс и переопределить mouseReleaseEvent. А как унаследованный элемент воткнуть в окно, которое сделано в designer'е?Как я понимаю, если наследовать, то писать надо что-то типа Код
Название: Re: Картинка на форме диалога. Как? Отправлено: V1KT0P от Май 20, 2012, 12:52 А как унаследованный элемент воткнуть в окно, которое сделано в designer'е? Взять виджет от которого наследовался, разместить в дизайнере, правой кнопкой по виджету и выбрать "Преобразовать в..". Там добавляешь имя образованного класса и имя заголовочного файла. Нажимаешь преобразовать и если сделал правильно то все будет работать.Название: Re: Картинка на форме диалога. Как? Отправлено: smartchecker от Май 20, 2012, 16:13 А как унаследованный элемент воткнуть в окно, которое сделано в designer'е? Взять виджет от которого наследовался, разместить в дизайнере, правой кнопкой по виджету и выбрать "Преобразовать в..". Там добавляешь имя образованного класса и имя заголовочного файла. Нажимаешь преобразовать и если сделал правильно то все будет работать.Но сигнал click() так и не появился. Название: Re: Картинка на форме диалога. Как? Отправлено: V1KT0P от Май 20, 2012, 16:27 Сделал класс, на QLabel нажал ПКМ, выбрал Promote to и в Promoted class name вписал свой класс. Ты в заголовочном файл добавил сигнал click()? Если нет то откуда же он возьмется. Если да, то выложи минимальный проект.Но сигнал click() так и не появился. Название: Re: Картинка на форме диалога. Как? Отправлено: smartchecker от Май 20, 2012, 16:32 Ты в заголовочном файл добавил сигнал click()? Если нет то откуда же он возьмется. Если да, то выложи минимальный проект. Я позаимствовал код из поста Elfebethttp://forum.vingrad.ru/index.php?showtopic=215040&view=findpost&p=1537598 (http://forum.vingrad.ru/index.php?showtopic=215040&view=findpost&p=1537598) Название: Re: Картинка на форме диалога. Как? Отправлено: V1KT0P от Май 20, 2012, 16:36 Я позаимствовал код из поста Elfebet Там сигнал называется clicked. Его анализатор кода не видит или даже компилятор?http://forum.vingrad.ru/index.php?showtopic=215040&view=findpost&p=1537598 (http://forum.vingrad.ru/index.php?showtopic=215040&view=findpost&p=1537598) Название: Re: Картинка на форме диалога. Как? Отправлено: smartchecker от Май 20, 2012, 16:40 Там сигнал называется clicked. Его анализатор кода не видит или даже компилятор? А как он должен называться? Вроде ж так и должен...у QPushButton он называется clicked() Название: Re: Картинка на форме диалога. Как? Отправлено: V1KT0P от Май 20, 2012, 16:42 Там сигнал называется clicked. Его анализатор кода не видит или даже компилятор? А как он должен называться? Вроде ж так и должен...у QPushButton он называется clicked() Название: Re: Картинка на форме диалога. Как? Отправлено: smartchecker от Май 20, 2012, 16:55 [Скинь минимальный проект(без лишнего кода), так я сразу ответ дам, а иначе можно только гадать что там не так. Ну как-то так.Название: Re: Картинка на форме диалога. Как? Отправлено: V1KT0P от Май 20, 2012, 17:04 Ну как-то так. Все работает. В аттаче сделано так, как ты хотел.Название: Re: Картинка на форме диалога. Как? Отправлено: smartchecker от Май 20, 2012, 17:19 Этот ход мне приходил в голову, но я наивно полагал, что эту операцию можно осуществить в designer'е.
Название: Re: Картинка на форме диалога. Как? Отправлено: GreatSnake от Май 21, 2012, 14:39 Этот ход мне приходил в голову, но я наивно полагал, что эту операцию можно осуществить в designer'е. И правильно думал, т.к. есть QPushButton, а у него есть свойство flat. |