在 Qt 中使用按钮堆叠小部件页面
Posted
技术标签:
【中文标题】在 Qt 中使用按钮堆叠小部件页面【英文标题】:stack widget pages using pushbutton in Qt 【发布时间】:2020-06-16 05:57:51 【问题描述】:如何使用QPushButton
s 浏览QStackWidget
页面?
每当单击按钮时都需要调用哪个方法,以便它打开一个特定的堆栈小部件页面。
感谢和问候,
【问题讨论】:
【参考方案1】:QStackedWidget
有一个方法.setCurrentIndex(int)
可以用来切换到不同的页面。您可以将该方法与QPushButton
的clicked()
signal
结合使用,以更改当前堆叠的小部件页面。
例子:
MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent), ui(new Ui::MainWindow)
ui->setupUi(this);
//initially set current page to 0
ui->stackedWidget->setCurrentIndex(0);
//suppose we have buttons button1 and button2
connect(button1, &QPushButton::clicked, this, [=]()
//set page to 1
ui->stackedWidget->setCurrentIndex(1);
);
connect(button2, &QPushButton::clicked, this, [=]()
//set page to 2
ui->stackedWidget->setCurrentIndex(2);
);
您也可以使用普通函数槽代替 lambda 函数:
//mainwindow.h file
class MainWindow
//...
private slots:
void onButton1Clicked();
void onButton2Clicked();
//mainwindow.cpp file
MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent), ui(new Ui::MainWindow)
//...
connect(button1, &QPushButton::clicked, this, &MainWindow::onButton1Clicked);
connect(button2, &QPushButton::clicked, this, &MainWindow::onButton2Clicked);
void MainWindow::onButton1Clicked()
ui->stackedWidget->setCurrentIndex(1);
void MainWindow::onButton2Clicked()
ui->stackedWidget->setCurrentIndex(1);
【讨论】:
在 (clicked,this, ) "[=]" 之后是什么? 这是一个 lambda 函数。这就像一个没有名字的函数。这里可以使用普通函数,但需要在MainWindow
类中的slots:
下声明。
@MdMoslehUddin 查看带有函数槽的更新答案
它说 button1 没有在这个范围内声明。 (我尝试了第二种方法)
是的,您必须使用已设置的变量名称。检查您的 .ui
文件中的变量名称。这只是一个例子。您的变量可能位于ui->
以上是关于在 Qt 中使用按钮堆叠小部件页面的主要内容,如果未能解决你的问题,请参考以下文章
在 Qt Stacked Widget 的特定小部件中更改背景颜色
如何关闭在提升的小部件中单击的按钮上的 qt 小部件 ui?