创建简单单色按钮的最简单方法

时间:2018-12-18 14:35:57

标签: qt qt5

我需要创建简单的单色按钮,只是在白色背景上用黑色文字(我知道,使用1bit会很丑)的黑色框。有没有不需要paintEvent重新实现的方法?

1 个答案:

答案 0 :(得分:0)

最好的方法是使用自己的样式表。

一个基本的示例可能是以下示例。在此示例中,我们设置背景为white,边框为black和文本为black的样式。用户按下按钮时相反。

根据您的要求,可以为disabledcheckedhover之类的状态设置样式。

main.cpp

#include <QtWidgets>    
#include "mainwindow.h"

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    MainWindow window;
    window.show();
    return app.exec();
}

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QtWidgets>    

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow();    
};

#endif

mainwindow.cpp

#include <QtWidgets>    
#include "mainwindow.h"

MainWindow::MainWindow()
{
    QWidget *centralWidget = new QWidget(this);
    QHBoxLayout *layout = new QHBoxLayout;
    QPushButton *pushButton = new QPushButton("PushButton");

    pushButton->setStyleSheet(
                            "QPushButton {"
                            " background-color: white;"
                            " border: 1px solid black;"
                            " color: black;"
                            " outline: none;"
                            "}"
                            "QPushButton:pressed {"
                            " background-color: black;"
                            " border: 1px solid white;"
                            " color: white;"
                            "}"
                    );

    layout->addWidget(pushButton);
    centralWidget->setLayout(layout);
    setCentralWidget(centralWidget);
}

好的例子herehere