QT学习之表格控件

来源:互联网 发布:mysql 空格 忽略 编辑:程序博客网 时间:2024/04/28 21:55

这次不仅会创建表格控件,还会用到QT的链表模板

先来看一段代码:

#include <QtGui>

 int main(int argc, char *argv[])
 {
     QApplication app(argc, argv);
     QWidget window;

     QLabel *queryLabel = new QLabel(
         QApplication::translate("nestedlayouts", "Query:"));//创建标签 内容为Query是不可互动的静态文本
     QLineEdit *queryEdit = new QLineEdit();//创建一个行编辑区域,即一个长条状的文本框
     QTableView *resultView = new QTableView(); //创建一个表格

     QHBoxLayout *queryLayout = new QHBoxLayout(); //创建一个布局类注意这里是QHBoxLayout 水平的布局类
     queryLayout->addWidget(queryLabel);//将标签与行文本框布局到一起
     queryLayout->addWidget(queryEdit);

    /*重头戏开始,首先是创建QT标准模型

    第一个函数用处为创建一个STRING列表,其值为输入流中的文本,表的内容作为一个头标签

    之后则是用了模板创建了string类型的链表结构*/

     QStandardItemModel model;

     model.setHorizontalHeaderLabels(QStringList()<<"Name"<<"Office");


                  QList<QStringList> rows = QList<QStringList>()
             <<(QStringList()<< "Verne Nilsen" << "123")//这里是Qstring的嵌套使用,初学者别被迷惑了
             << (QStringList() << "Carlos Tang" << "77")
             << (QStringList() << "Bronwyn Hawcroft" << "119")
             << (QStringList() << "Alessandro Hanssen" << "32")
             << (QStringList() << "Andrew John Bakken" << "54")
             << (QStringList() << "Vanessa Weatherley" << "85")
             << (QStringList() << "Rebecca Dickens" << "17")
             << (QStringList() << "David Bradley" << "42")
             << (QStringList() << "Knut Walters" << "25")
             << (QStringList() << "Andrea Jones" << "34");

         foreach (QStringList row, rows) //这是处理链表的宏具体用法我也还没搞清楚呵呵
         {
             QList<QStandardItem *> items;
             foreach (QString text, row)
                 items.append(new QStandardItem(text));
             model.appendRow(items);
         }

         resultView->setModel(&model);//将之前的模型传递给表格
         resultView->verticalHeader()->hide();
         resultView->horizontalHeader()->setStretchLastSection(true);

 

     QVBoxLayout *mainLayout = new QVBoxLayout();//这里是垂直布局QVBoxLayout
     mainLayout->addLayout(queryLayout);//将标签与行文本框的布局添加到垂直布局中
     mainLayout->addWidget(resultView);//将表格添加到垂直布局中
     window.setLayout(mainLayout);//将垂直布局  即总布局传递给window 让其部署

     // Set up the model and configure the view...
     window.setWindowTitle(
         QApplication::translate("nestedlayouts", "Nested layouts"));
     window.show();
     return app.exec();
 }

这里由于涉及到了模板,我不是很熟悉所以不好的地方我下次补充嘿嘿

原创粉丝点击