關鍵代碼:?
#include <QPainter>
#include <QStyleOption>void paintEvent(QPaintEvent *e)
{QStyleOption opt;opt.init(this);QPainter p(this);style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);QWidget::paintEvent(e);
}
定義子類
class MovableWidget : public QWidget {Q_OBJECT
public:MovableWidget(QWidget *parent = nullptr) : QWidget(parent) {}//重寫
protected:void paintEvent(QPaintEvent *e){QStyleOption opt;opt.init(this);QPainter p(this);style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);QWidget::paintEvent(e);}};
?使用方法:
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);auto *splitter = new QSplitter(Qt::Horizontal, this); // 水平分割auto *widget1 = new MovableWidget();auto *widget2 = new MovableWidget();auto *widget3 = new MovableWidget();widget1->setStyleSheet("background-color: lightgray; border: 2px solid black; margin: 10px;");widget2->setStyleSheet("background-color: green;");widget3->setStyleSheet("background-color: blue;");splitter->addWidget(widget1);splitter->addWidget(widget2);splitter->addWidget(widget3);setCentralWidget(splitter);}
效果
?