堆栈窗体QStackedWidget类是经常在应用程序中用到的,在实际应用中,堆栈窗体多与列表框QlistWidget和下拉列表框QCombobox配合使用。
下面我就讲一讲QStackedWidget的代码实现。
1. 建立项目时基类选择QDialog,取消Gernerate form复选框的选中状态。(项目名自定义)
2. 打开头文件“dialog.h”,添加以下代码:
private:
QListWidget *list;
QStackedWidget *stack;
QLabel *label1;
QLabel *label2;
QLabel *label3;
同时添加一下头文件:
#include <QListWidget>
#include <QStackedWidget>
#include <QLabel>
3. 打开“dialog.cpp”文件,添加如下代码:
setWindowTitle(tr("StackedWidget"));
list = new QListWidget(this); //定义列表项
list->insertItem(0,tr("windows1"));
list->insertItem(1,tr("windows2"));
list->insertItem(2,tr("windows3"));
label1 = new QLabel(tr("WindowsTest1")); //生成label对象,并赋值
label2 = new QLabel(tr("WindowsTest2"));
label3 = new QLabel(tr("WindowsTest3"));
QPalette pe;
pe.setColor(QPalette::WindowText,Qt::red);
label1->setPalette(pe);
label2->setPalette(pe);
label3->setPalette(pe);
stack = new QStackedWidget(this); //生成堆栈部件对象
stack->addWidget(label1); //label对象载入到堆栈部件
stack->addWidget(label2);
stack->addWidget(label3);
QHBoxLayout *mainLayout = new QHBoxLayout(this); //对整个对话框进行布局
mainLayout->setMargin(5); //控件距离边界的距离
mainLayout->setSpacing(0);
mainLayout->addWidget(list);
mainLayout->addWidget(stack,0,Qt::AlignHCenter); //默认左对齐
mainLayout->setStretchFactor(list,1);
mainLayout->setStretchFactor(stack,3);
connect(list,SIGNAL(currentRowChanged(int)),stack,SLOT(setCurrentIndex(int)));
同时在头部加入头文件:#include "dialog.h"
4. 主函数如下:
#include "dialog.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QFont font("楷体",20,QFont::Bold); //设定整个应用程序界面的中的字体和字号等格式
a.setFont(font);
Dialog w;
//w.setMaximumSize(600,300); //设定控件的最大长宽度
//w.setMinimumSize(200,100); //设定控件的最小长宽度
w.setFixedSize(600, 200); //将窗口大小固定
w.setWindowFlags(Qt::WindowCloseButtonHint); //隐藏多余的按钮,只剩下关闭按钮
w.show();
return a.exec();
}
5. 运行结果如下:
本例中使用的一下函数小结:
设定整个应用程序界面的中的字体和字号等格式:
QApplication a(argc, argv);
QFont font("楷体",20,QFont::Bold);
a.setFont(font);
//设定窗口大小的一些函数:
Dialog w;
w.setMaximumSize(600,300); //设定控件的最大长宽度
w.setMinimumSize(200,100); //设定控件的最小长宽度
//w.setFixedSize(600, 200); //将窗口大小固定
//隐藏多余的按钮,只剩下关闭按钮:
w.setWindowFlags(Qt::WindowCloseButtonHint);
w.show();