- 在myWidget的头文件中声明两个按钮,如:
class MyWidget : public QWidget
{
Q_OBJECT
public:
explicit MyWidget(QWidget *parent = nullptr);
~MyWidget();
private:
QPushButton *button1;
QPushButton *button2;
//...
};
- 在myWidget的构造函数中创建这两个按钮,并将它们添加到工具栏中,如:
MyWidget::MyWidget(QWidget *parent) :
QWidget(parent)
{
//...
button1 = new QPushButton("Button 1");
button2 = new QPushButton("Button 2");
QToolBar *toolBar = new QToolBar(this);
toolBar->addWidget(button1);
toolBar->addSeparator();
toolBar->addWidget(button2);
//...
}
- 创建中心界面,如:
class CenterWidget : public QWidget
{
Q_OBJECT
public:
explicit CenterWidget(QWidget *parent = nullptr);
~CenterWidget();
private:
//...
};
- 在myWidget中创建stackWidget,并将中心界面添加到其中,如:
MyWidget::MyWidget(QWidget *parent) :
QWidget(parent)
{
//...
CenterWidget *centerWidget = new CenterWidget(this);
QStackedWidget *stackedWidget = new QStackedWidget(this);
stackedWidget->addWidget(centerWidget);
//...
}
- 在CenterWidget中通过信号与槽来调用按钮的操作,如:
CenterWidget::CenterWidget(QWidget *parent) :
QWidget(parent)
{
//...
connect(button1, &QPushButton::clicked, this, [=]() {
// 按钮1的操作
});
connect(button2, &QPushButton::clicked, this, [=]() {
// 按钮2的操作
});
//...
}
- 在myWidget中通过setCurrentIndex()方法来切换到CenterWidget,如:
MyWidget::MyWidget(QWidget *parent) :
QWidget(parent)
{
//...
button1 = new QPushButton("Button 1");
button2 = new QPushButton("Button 2");
QToolBar *toolBar = new QToolBar(this);
toolBar->addWidget(button1);
toolBar->addSeparator();
toolBar->addWidget(button2);
CenterWidget *centerWidget = new CenterWidget(this);
QStackedWidget *stackedWidget = new QStackedWidget(this);
stackedWidget->addWidget(centerWidget);
connect(button1, &QPushButton::clicked, stackedWidget, [=]() {
stackedWidget->setCurrentIndex(0); // 切换到CenterWidget
});
//...
}
本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://qt.0voice.com/?id=910