2016-10-21 1 views
1

Wie Schriftart, Größe und Farbe für den Text von QPushButton in Qt5.6.1 mit QPalette? Ich bin gespannt, wie wir diese Eigenschaften ohne QStyleSheet in Qt setzen können. Außerdem können wir Hex-Farbcode in QT einstellen. Bitte schlagen Sie eine Möglichkeit vor, mit QPalette zu arbeiten. DankWie Text auf Qpushbutton mit QPalette anpassen?

+0

Haben Sie in der Dokumentation geschaut? 'QPushButton' erbt' QWidget' mit [font] (http://doc.qt.io/qt-5/qwidget.html#font-prop) und ['palette'] (http: // doc. qt.io/qt-5/qwidget.html#palette-prop) Eigenschaften. –

Antwort

1

Wie Schriftart, Größe und Farbe für den Text von QPushButton in Qt5.6.1 mit QPalette setzen?

Ein QPalette enthält Farbgruppen für jeden Widget-Status. Es enthält keine Schrift-/Größeninformationen.

Sie können QWidget::setPalette() verwenden, um bestimmte color roles (Button, ButtonText, Window...) Zu ändern, und QWidget::setFont() verwenden, um Schriftfamilie/Schriftgröße zu ändern. Zum Beispiel:

QPushButton button("Press Me"); 
//get initial default palette 
QPalette pal= button.palette(); 
//change some color roles 
pal.setColor(QPalette::Window, QColor(255, 0, 0)); //red color 
pal.setColor(QPalette::Button, QColor(0x00, 0x00, 0xff)); //blue color (hex representation) 
pal.setColor(QPalette::ButtonText, QColor(Qt::yellow)); //Qt global color 
button.setPalette(pal); 
//change font family and size 
button.setFont(QFont("Helvetica [Cronyx]", 15, QFont::Bold)); 

Damit Paletten richtig funktioniert, können Sie in der Anwendung der ersten Verwendung Fusion Stil wollen, kann durch den Aufruf:

QApplication::setStyle(QStyleFactory::create("Fusion")); 

vor der QApplication Instanz in main() instanziieren, weil einige Arten tun Verwenden Sie die Palette nicht für alle Zeichnungen, wenn sie beispielsweise native Motiv-Engines verwenden. Dies gilt sowohl für die Windows XP-, Windows Vista- als auch die OS X-Stile.

Sie können auch die Palette/Schriftart für die gesamte Anwendung festlegen, so dass Sie diese Farben in allen Widgets in der Anwendung erhalten. Etwas wie folgt aus:

screenshot

#include <QtWidgets> 

int main(int argc, char** argv) 
{ 
    QApplication::setStyle(QStyleFactory::create("Fusion")); 
    QPalette pal= QApplication::palette(); 
    pal.setColor(QPalette::Window, QColor(Qt::red)); 
    pal.setColor(QPalette::Button, QColor(Qt::blue)); 
    pal.setColor(QPalette::ButtonText, QColor(Qt::yellow)); 
    pal.setBrush(QPalette::WindowText, QBrush(QColor(Qt::yellow))); 
    pal.setColor(QPalette::Highlight, QColor(Qt::green)); 
    //further palette customization. . . 
    QApplication::setPalette(pal); 
    QApplication::setFont(QFont("Helvetica [Cronyx]", 15, QFont::Bold)); 

    QApplication a(argc, argv); 

    //setup and show GUI components 

    return a.exec(); 
} 
0

ich mit dem oben genannten Punkte stimmen.
Im Folgenden ist die ein anderer Ansatz, um die Schriftartanpassung mit QWidgets zu erreichen.

QPushButton *button3 = new QPushButton("CheckFont", this); button3->setGeometry(QRect(QPoint(50,50),QSize(200,50))); QFont FontObj; FontObj.setFamily(QStringLiteral("Helvetica [Cronyx]")); FontObj.setPointSize(15); FontObj.setBold(true); FontObj.setUnderline(true); button3->setFont(FontObj);

Auch wenn Farbcode ist in Format wie „# FFFFFF“ (die weiße Farbcode ist), dann können Sie wie folgt verwenden, um die Hex-Farbcode mit QPalette einzustellen.

pal.setColor(QPalette::Button, QColor(QRgb("#ffffff"))); 

ODER

pal.setColor(QPalette::Button, QColor("#ffffff"));