这是一个简单的修改用户资料的例子,在这个例子里可以看到如何实现一个相对较为复杂的窗口布局,如何使用分割窗口,如何使用堆栈窗口等,效果图如下:
代码的实现有点多,但是我已经尽力备注,方便大家的理解,建议看着效果图和注释一起理解这些布局,要坚持看下去,希望能对你有所帮助,具体代码如下:
//main.cpp
<span style="font-family:Microsoft YaHei;font-size:18px;">#include "content.h"
#include <QApplication>
#include <QTextCodec>
#include <QSplitter>
#include <QListWidget>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QFont font("AR PL KaitiM GB",12);//设置字体
a.setFont(font);
QSplitter *splitterMain =new QSplitter(Qt::Horizontal,0);//水平分割窗口,作为主布局
splitterMain->setOpaqueResize(true);//可调整大小
QListWidget *list=new QListWidget(splitterMain);//在新建的主窗口的左侧插入一个QlistWidget作为条目选择框
list->insertItem(0,QObject::tr("基本信息"));
list->insertItem(1,QObject::tr("联系方式"));
list->insertItem(1,QObject::tr("详细资料"));
Content *content=new Content(splitterMain);//在水平分割窗的右侧窗口中插入content类对象
QObject::connect(list,SIGNAL(currentRowChanged(int)),content->stack,SLOT(setCurrentIndex(int)));//连接列表框中的currentRowChanged()信号与堆栈窗的setCurrentIndex()槽函数
splitterMain->setWindowTitle(QObject::tr("修改用户资料"));//主布局的标题
splitterMain->setMinimumSize(splitterMain->minimumSize());//设置主布局框即水平分割窗的最小尺寸
splitterMain->setMaximumSize(splitterMain->maximumSize());//设置主布局框的最大尺寸
splitterMain->show();
//Content w;
//w.show();
return a.exec();
}
</span>
<span style="font-family:Microsoft YaHei;font-size:18px;">#include<QStackedWidget>
#include<QPushButton>
#include"baseinfo.h"
#include"contact.h"
#include"detail.h"
#ifndef CONTENT_H
#define CONTENT_H
#include <QDialog>
class Content : public QFrame
{
Q_OBJECT
public:
Content(QWidget *parent =