32-界面设计与初始化
4.8.2 界面设计与初始化
Samp4_9的主窗体从QMainWindow继承而来。在图4-18所示的窗口上,一个QTableWidget组件和一个QPlainTextEdit组件组成上下分割布局splitter。左侧的按钮都放在一个QGroupBox组件里,采用Grid布局,然后将groupBox与splitter采用左右分割布局。这是一个典型的三区分割的布局。
在主窗口类MainWindow里自定义了一些变量和函数,用于后面的代码实现,下面是在MainWindow的private部分自定义的变量和函数:
private:
// 自定义单元格Type的类型,在创建单元格的 item时使用
enum CellType{ctName=1000,ctSex,ctBirth,ctNation,ctPartyM,ctScore};
// 各字段在表格中的列号
enum FieldColNum{colName=0,colSex,colBirth,
colNation,colScore,colPartyM};
QLabel *labCellIndex; //状态栏上用于显示单元格的行号、列号
QLabel *labCellType;//状态栏上用于显示单元格的type
QLabel *labStudID; //状态栏上用于显示学号
void createItemsARow(int rowNo,QString Name,QString Sex,QDate birth,
QString Nation,bool isPM,int score); //为某一行创建items
枚举类型CellType是用来表示单元格类型的,在创建单元格时使用。
枚举类型FieldColNum用枚举常量表示各字段在表格中的列号。
在MainWindow的构造函数里对界面进行初始化,代码如下:
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
setCentralWidget(ui->splitterMain);
//状态栏初始化创建
labCellIndex = new QLabel("当前单元格坐标:",this);
labCellIndex->setMinimumWidth(250);
labCellType=new QLabel("当前单元格类型:",this);
labCellType->setMinimumWidth(200);
labStudID=new QLabel("学生ID:",this);
labStudID->setMinimumWidth(200);
ui->statusBar->addWidget(labCellIndex);//加到状态栏
ui->statusBar->addWidget(labCellType);
ui->statusBar->addWidget(labStudID);
}