在Qt中使用按钮堆叠小部件页面
如何使用在Qt中使用按钮堆叠小部件页面,qt,qt5,qpushbutton,qstackedwidget,Qt,Qt5,Qpushbutton,Qstackedwidget,如何使用QPushButtons导航QStackWidget页面? 每当单击按钮时需要调用哪个方法,以便打开一个particluar stackwidget页面 感谢和问候,QStackedWidget有一个方法.setCurrentIndex(int),您可以使用该方法切换到其他页面。您可以将该方法与QPushButton的clicked()signal结合使用,以更改当前堆叠的小部件页面 例如: MainWindow::MainWindow(QWidget* parent) : QMainW
QPushButton
s导航QStackWidget
页面?
每当单击按钮时需要调用哪个方法,以便打开一个particluar stackwidget页面
感谢和问候,
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文件
类主窗口{
//...
专用插槽:
void onButton1Clicked();
void onButton2Clicked();
}
//mainwindow.cpp文件
MainWindow::MainWindow(QWidget*parent):QMainWindow(parent),ui(新ui::MainWindow)
{
//...
连接(button1,&QPushButton::clicked,this,&MainWindow::onButton1Clicked);
连接(按钮2,&QPushButton::clicked,this,&MainWindow::onButton2Clicked);
}
void主窗口::onButton1Clicked()
{
ui->stackedWidget->setCurrentIndex(1);
}
void主窗口::onButton2Clicked()
{
ui->stackedWidget->setCurrentIndex(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文件
类主窗口{
//...
专用插槽:
void onButton1Clicked();
void onButton2Clicked();
}
//mainwindow.cpp文件
MainWindow::MainWindow(QWidget*parent):QMainWindow(parent),ui(新ui::MainWindow)
{
//...
连接(button1,&QPushButton::clicked,this,&MainWindow::onButton1Clicked);
连接(按钮2,&QPushButton::clicked,this,&MainWindow::onButton2Clicked);
}
void主窗口::onButton1Clicked()
{
ui->stackedWidget->setCurrentIndex(1);
}
void主窗口::onButton2Clicked()
{
ui->stackedWidget->setCurrentIndex(1);
}
点击后是什么?“[=]”?这是一个lambda函数。它就像一个没有名字的函数。您可以在此处使用普通函数,但需要在main window
类中的slots:
下声明该函数。@MdMoslehUddin使用函数slots查看更新后的答案它说button1不在此范围内声明。(我尝试了第二种方法)是的,您必须使用您设置的变量名。检查.ui
文件中的变量名称。这只是一个例子。您的变量可能位于ui->
之后是什么(单击此,)“[=]”?这是一个lambda函数。它就像一个没有名字的函数。您可以在此处使用普通函数,但需要在main window
类中的slots:
下声明该函数。@MdMoslehUddin使用函数slots查看更新后的答案它说button1不在此范围内声明。(我尝试了第二种方法)是的,您必须使用您设置的变量名。检查.ui
文件中的变量名称。这只是一个例子。您的变量可能位于ui->