2015-07-29 2 views
0

Я в процессе стилизации кнопок в своем пользовательском интерфейсе, используя дизайнер пользовательского интерфейса в QT Creator 3.0.1 (с QT 4.8). Я пытаюсь, чтобы эти кнопки больше походили на ссылки на веб-сайте - без границ и отвечали на мыши. Вот таблица стилей настоящее время я использую:Цветовая метка, не работающая на QPushButtons

QPushButton { 
    border: none; 
    color: #a8a8a8; 
} 

QPushButton:hover { 
    color: #ffffff; 
} 

Я думал, что это было довольно просто, но по какой-то причине цвет тег не работает на парит. Чтобы проверить, я попытался изменить кнопку другими способами, например, изменить цвет фона, и это работало безупречно. Я также попытался изменить селектор на что-то более конкретное, включив предок (QWidget QPushButton:hover) и используя ID (QPushButton#templateButton), но ни один из них не сработал.

Это проблема с цветовой меткой, или я пропущу что-то очевидное?

+0

http://doc.qt.io/qt-4.8 /stylesheet-examples.html#customizing-qpushbutton – phyatt

+0

http://doc.qt.io/qt-4.8/stylesheet-examples.html#qpushbutton-and-images http://doc.qt.io/qt-4.8/stylesheet-examples.html#customizing-qcheckbox Вы пробовали задавать зависание под проверенным и непроверенным, как с помощью флажка? Я думаю, что зависание может оказаться в этих псевдо-состояниях, потому что qpushbutton поддерживает эти состояния ... – phyatt

+0

Я просмотрел документацию, но кажется, что они никогда не используют цветовой тег для состояний зависания для QPushButton. Использование 'checked' и' unchecked', похоже, ничего не делает. –

ответ

1

Также можно использовать QLabel создавать интерактивные ссылки. Создание пользовательского класса ClickableLabel, который наследует QLabel и обрабатывает mousePressEvents

class ClickableLabel : public QLabel 
{ 
    Q_OBJECT 
public: 
    explicit ClickableLabel(QWidget *parent = 0); 

signals: 
    void clicked(); 

protected: 
    void mousePressEvent(QMouseEvent * event) ; 
}; 

И

void ClickableLabel::mousePressEvent(QMouseEvent * event) 
{ 
    Q_UNUSED(event); 
    emit clicked(); 
} 

Это также, вероятно, можно обрабатывать мыши при наведении курсора мыши события и изменения стиля метки на их основе. Однако я его не тестировал.

Это решение было скопировано откуда-то, но я больше не помню исходный источник.

+0

Я собираюсь пойти с этим решением. 'QPushButton' просто не работает для меня. –

0

Попробуйте это:

#templateButton { 
    border: 0px; 
    color: #a8a8a8; 
    text-decoration: underline; 
    text-align: right; 
} 

#templateButton:hover { 
    color: #FFFFFF; 
} 
+0

Единственное различие, которое я вижу, это текстовое оформление и выравнивание текста, можете ли вы объяснить свой ответ немного больше? Кстати, это не работает. –

0

@ Энтони Хилярд. Я покажу вам несколько фотографий, поэтому отправлю здесь еще один ответ. 1.normal enter image description here

2.hover enter image description here

#pushButtonForgetPassword { border: none; color: #0066ff; text-decoration: underline; text-align: right; }

#pushButtonForgetPassword:hover { color: #FFFFFF; }

pushButtonForgetPassword будет идентификатор моей кнопки ссылка

Смежные вопросы