堆栈窗体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)));
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();