Как удалить эффект щелчка из QPushButton

В QT: я хочу показать только значок и некоторый текст, поэтому я использую QPushButton. Но как убрать с него эффект щелчка?


person Al2O3    schedule 28.09.2012    source источник
comment
Что вы имеете в виду «эффект щелчка»? Вы имеете в виду 3D-фаску?   -  person cmannett85    schedule 28.09.2012
comment
Я думаю, он хочет использовать QPushButton в основном как QLabel с одновременным отображением текста и значка ...   -  person Andreas Fester    schedule 28.09.2012


Ответы (2)


Вы можете создать подкласс QPushButton и игнорировать все события, кроме события Paint:

class IconLabel : public QPushButton {

...

bool IconLabel::event ( QEvent * e ) {
   if (e->type() == QEvent::Paint) {
      return QPushButton::event(e);
   }
   return true;
}

В зависимости от ваших требований может потребоваться пропустить дополнительные события, например, если вы хотите использовать всплывающую подсказку на своем IconLabel:

   if (e->type() == QEvent::Paint ||
       e->type() == QEvent::ToolTip) {
      return QPushButton::event(e);
   }
person Andreas Fester    schedule 28.09.2012

Я не пробовал это решение но похоже должно работать.

Копирование по ссылке выше

Используйте форматированный текст для метки, например:

lbl->setTextFormat(Qt::RichText);
lbl->setText("<img src=":/myimage.png">Hello!");
person dev    schedule 28.09.2012
comment
Хорошее решение :-) Просто попробовал, и он работает хорошо (немного изменил вызов setText (): lbl->setText("<img src=\"myimage.png\">Hello!");, это также зависит от того, используете ли вы ресурс или локальный файл). Стиль немного отличается от подхода QPushButton, например. без рамки, но это зависит от конкретных требований OP и, безусловно, может быть скорректировано с помощью некоторой таблицы стилей. - person Andreas Fester; 28.09.2012