Название: HTML на QPushButton Отправлено: k06a от Ноябрь 05, 2007, 14:26 Недавно начал использовать библиотеку Qt, столкнулся с такой проблемой . . .
Возможно ли на QPushButton разместить HTML коды и теги как на QLabel? Собственно нужна кнопка с интегралом на ней. QPusnButton *but = new QPushButton("∫"); - На кнопке написано "int;" QPusnButton *but = new QPushButton("&∫"); - На кнопке написано "∫" Или может не QPushButton использовать, а что-нибудь другое? (Иконки на кнопках не предлагать) // Qt4.2.0, MVS2005 Название: Re: HTML на QPushButton Отправлено: Пантер от Ноябрь 05, 2007, 14:52 Экранировать, наверное, нужно. Т.к. знак & обеспечивает подчеркивание буквы на кнопке. Попробуйте или в теги взять, или чтото типа "\&int". К сожалению у меня сейчас нет возможности проверить.
Название: Re: HTML на QPushButton Отправлено: k06a от Ноябрь 05, 2007, 14:59 QPushButton *but = new QPushButton("\∫"); - На кнопке написано "int;"
К сожалению(( Название: Re: HTML на QPushButton Отправлено: Пантер от Ноябрь 05, 2007, 15:05 Млин, а если "<p>&int</p>" или "<p>\&int</p>"?
Название: Re: HTML на QPushButton Отправлено: k06a от Ноябрь 05, 2007, 15:14 QPushButton *but = new QPushButton("<p>\&int</p>"); - На кнопке написано "<p>int</p>"
QPushButton *but = new QPushButton("<p>&int<p>"); - На кнопке написано "<p>int</p>" QPushButton *but = new QPushButton("<p>\∫</p>"); - На кнопке написано "<p>int;</p>" QPushButton *but = new QPushButton("<p>∫</p>"); - На кнопке написано "<p>int;</p>" Название: Re: HTML на QPushButton Отправлено: Пантер от Ноябрь 05, 2007, 15:44 Походу тогда никак. :( Хотя по ассистенту для отображения текста используется QLabel. Можно попробовать вставить символ юникода, если там есть интеграл.
Еще как вариант расположить на кнопке QLabel. :) Название: Re: HTML на QPushButton Отправлено: k06a от Ноябрь 05, 2007, 16:34 В QLabel-то всё работает. А вот как QLabel на кнопку посадить?
Название: Re: HTML на QPushButton Отправлено: Пантер от Ноябрь 05, 2007, 16:42 QLabel* label=new QLabel(button);
QVBoxLayout* layot=new QVBoxLayout; layout->addWidget(label); button->setLayout(layout); Что-то типа того. Ассистента под рукой нет, так что не могу посмотреть есть ли у QPausButton setLayout. Название: Re: HTML на QPushButton Отправлено: k06a от Ноябрь 05, 2007, 17:11 panter_dsd, ОгРоМнОе СпАсИбО!!))
Код записал так: Код: QPushButton *but = new QPushButton; Теперь постараюсь ток его по горизонтали выровнять по центру . . . // дописал lay->setAlignment(Qt::AlignCenter); - вот и всё Ещё раз спасибо) Название: Re: HTML на QPushButton Отправлено: k06a от Ноябрь 05, 2007, 23:26 Из интересного решения проблемы вылезла новая проблема . . .
QPushButton *button = new QPushButton; QHBoxLayout *layout = new QHBoxLayout(but); QLabel *label = new QLabel("<p>∫</p>"); layout->addWidget(label); layout->setAlignment(Qt::AlignCenter); Да, на кнопке нарисован интеграл (а на соседних ещё страшней значки) Но для нажатия на кнопку необходимо попасть именно в QPushButton, а не в QLabel!!! Это не так то просто . . . У QLabel нет сигнала clicked() (и похожих) . . . У QHBoxLayout - аналогично . . . Возможно ли сделать QLabel видимым, но неосязаемым? Чтобы кликать по нему, а попадать в QPushButton. // Qt 4.2.0, MVS2005 Название: Re: HTML на QPushButton Отправлено: pastor от Ноябрь 06, 2007, 00:11 Нарисуй свой класс кнопки на базе QLabel
Название: Re: HTML на QPushButton Отправлено: pastor от Ноябрь 06, 2007, 00:24 Кстате, а разве через юникод кода не получаеться?
Код: QPushButton *btn = new QPushButton(QString(0x222B)); Лично у меня такой код работает на ура (выводиться значок интеграла) Название: Re: HTML на QPushButton Отправлено: k06a от Ноябрь 06, 2007, 00:54 pastor, точно, пасиб! Так намного проще)! А размер текста кнопки устанавливать можно как-нибудь? Щас нет возможности проверить . . .
Название: Re: HTML на QPushButton Отправлено: pastor от Ноябрь 06, 2007, 01:03 Пробуй менять размер фонта
Название: Re: HTML на QPushButton Отправлено: Tam-Tam от Ноябрь 06, 2007, 08:43 Попробовал выводить текст на кнопку через лейблу. Столкнулся с проблемой. Пока текст размера по умолчанию черного цвета, все нормально. Но если изменить хотя бы один параметр из вышеуказанных, то кнопка начинает вести себя неадекватно - нажимается не на каждый щелчок, иногда реагирует с задержкой, в редких случая нажимается и остаелся нажатой. Кто-нибудь сталкивался с таким ? Знает что за глюк ?
Название: Re: HTML на QPushButton Отправлено: k06a от Ноябрь 09, 2007, 23:37 Tam-Tam, всё из-за того што ты нажимаешь на QLabel, а не на QPushButton . . .
Символы юникода действительно нормально отображаются из QString. А у меня так и не получается намутить на кнопке буковку с нижним индексом (произвольным) . . . Название: Re: HTML на QPushButton Отправлено: k06a от Ноябрь 10, 2007, 00:01 Всё-таки нужен HTML . . .
А у QLabel нет сигнала клика по ней . . . проблема . . . Название: Re: HTML на QPushButton Отправлено: pastor от Ноябрь 10, 2007, 00:43 Всё-таки нужен HTML . . . А у QLabel нет сигнала клика по ней . . . проблема . . . Делаем тогда из QLabel кнопарь... :)) Наследуемся, выставляем параметры фрейма, чтобы лейбла была похожа на кнопку, реализовываем нужные сигналы и вперёд, юзаем полученый кнопарь ;) Я уже так когда-то делал Название: Re: HTML на QPushButton Отправлено: k06a от Ноябрь 10, 2007, 15:57 реализовываем нужные сигналы и вперёд, юзаем полученый кнопарь ;) С этого момента чуть подробнее . . . как их самому реализовать? И хотелось бы потом добавить эллемент в группу Экшонов . . . Название: Re: HTML на QPushButton Отправлено: k06a от Ноябрь 10, 2007, 16:23 Код: class HTMLButton: public QLabel { А как сигналы назначить? У QFrame и QLabel их нет вообще . . . Название: Re: HTML на QPushButton Отправлено: Tam-Tam от Ноябрь 10, 2007, 17:58 Tam-Tam, всё из-за того што ты нажимаешь на QLabel, а не на QPushButton . . . Тогда почему при стандартном тексте все пашет нормально ? А как сигналы назначить? У QFrame и QLabel их нет вообще . . . Как по мне не слишком удачная мысль реализовывать элемент исходя из элемента с совсем другой функциональность. Поскольку на кнопке также можно писать текст, то проще будет наследовать от кнопки и встроить "понимание" HTML. Правда как это сделать я тоже пока плохо себе представляю :) Название: Re: HTML на QPushButton Отправлено: Tam-Tam от Ноябрь 10, 2007, 18:00 Всё-таки нужен HTML . . . А у QLabel нет сигнала клика по ней . . . проблема . . . Всегда есть перехват событий. Название: Re: HTML на QPushButton Отправлено: k06a от Ноябрь 10, 2007, 18:49 Вот так вот всё нормально пашет)) На кнопке(эл-т очень на неё похожий) действительно работает HTML . . . Теперь на кнопках и интегралы и нижние индексы и степени и т.д.
Код: class HTMLButton: public QLabel, public QEvent { Название: Re: HTML на QPushButton Отправлено: k06a от Ноябрь 10, 2007, 19:56 Tam-Tam, всё из-за того што ты нажимаешь на QLabel, а не на QPushButton . . . Тогда почему при стандартном тексте все пашет нормально ?А ты попробуй нажимать не в QLabel - тобишь в уголки и края кнопок, глюков нет)))) Ну стандартный то он стандартный, а не впихнутый насильно) Название: Re: HTML на QPushButton Отправлено: k06a от Ноябрь 10, 2007, 20:05 Такой вопрос теперь.
setFrameStyle(QFrame::StyledPanel | QFrame::Raised); - очертаний кнопки не видно. setFrameStyle(QFrame::Panel | QFrame::Raised); - а так видно. Почему? Хотелось бы StyledPanel . . . Но её не видно ни при каких параметрах толщинны бордюра . . . Название: Re: HTML на QPushButton Отправлено: pastor от Ноябрь 10, 2007, 23:47 Если честно, то получилась какае-то кривоватая реализация HTMLButton :)
Можно было сделать примерно так: Код: class HTMLButton: public QLabel { Далее используем как обычную кнопку: Код: HTMLButton *btn = new HTMLButton(this); Впринципе класс можно наворотить дальше. ЗЫ: не пинаёте больно, если кое-что забыл :) Название: Re: HTML на QPushButton Отправлено: pastor от Ноябрь 10, 2007, 23:49 Всегда есть перехват событий. А какая проблема создать эти сигналы? :) Название: Re: HTML на QPushButton Отправлено: k06a от Ноябрь 11, 2007, 01:17 Спасибо! Так конешно красивее код. Просто не знал как сигнал вызывать . . .
В книге об этом молчат вроде . . . Название: Re: HTML на QPushButton Отправлено: pastor от Ноябрь 11, 2007, 01:49 Могу предложить вот такой код:
Код: class HTMLButton: public QPushButton { имхо он лучше. Только вам прийдётся самому отцентровать текст в кнопке. Я подал идею, далее сами :) Название: Re: HTML на QPushButton Отправлено: k06a от Ноябрь 11, 2007, 13:19 Такой вопрос теперь. setFrameStyle(QFrame::StyledPanel | QFrame::Raised); - очертаний кнопки не видно. setFrameStyle(QFrame::Panel | QFrame::Raised); - а так видно. Почему? Хотелось бы StyledPanel . . . Но её не видно ни при каких параметрах толщинны бордюра . . . Почему StyledPanel не хочет отображаться??? Просто нет никакой кнопки, только HTML Название: Re: HTML на QPushButton Отправлено: pastor от Ноябрь 11, 2007, 13:36 Почему StyledPanel не хочет отображаться??? Просто нет никакой кнопки, только HTML Отображение зависит от текущего стиля. Честно говоря, незнаю почему оно так отображаеться. При использование CDE и Motif стиля этобраджаеться нормально Название: Re: HTML на QPushButton Отправлено: k06a от Ноябрь 11, 2007, 17:39 Такое ощущение, что кнопки Flat.
Название: Re: HTML на QPushButton Отправлено: pastor от Ноябрь 11, 2007, 19:00 Такое ощущение, что кнопки Flat. Используй последний мною приведённый код, только раелизуй центровку текста |