我需要创建简单的单色按钮,只是在白色背景上用黑色文字(我知道,使用1bit会很丑)的黑色框。有没有不需要paintEvent重新实现的方法?
答案 0 :(得分:0)
最好的方法是使用自己的样式表。
一个基本的示例可能是以下示例。在此示例中,我们设置背景为white
,边框为black
和文本为black
的样式。用户按下按钮时相反。
根据您的要求,可以为disabled
,checked
或hover
之类的状态设置样式。
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);
}