Qt学习笔记8——P26-28. ui中的一些控件(QTreeWidget, QTableWidget, 其他)
- P26. QTreeWidget树控件
- P27. QTableWidget控件
- P28. 其他常用控件介绍
- P26. QTreeWidget树控件(创建了新项目)
- (ui界面)Item Widgets (Item-Based) -> Tree Widget
把"Tree Widget"拖进界面后,如果想把此Tree Widget居中,选中最大的窗口(Widget),然后选工具栏中的"水平居中"或"垂直居中"都可以。
1 //treeWidget(变量名)树控件使用
2 //设置头部
3 ui->treeWidget->setHeaderLabels(QStringList()<<"英雄"<<"英雄介绍"); //后面括号里的部分是匿名对象;treeWidget是ui中添加的树控件的变量名
4 //创建(根)节点
5 QTreeWidgetItem * liItem = new QTreeWidgetItem(QStringList()<<"力量");
6 QTreeWidgetItem * minItem = new QTreeWidgetItem(QStringList()<<"敏捷");
7 QTreeWidgetItem * zhiItem = new QTreeWidgetItem(QStringList()<<"智力");
8 //添加到顶层节点(根)
9 ui->treeWidget->addTopLevelItem(liItem);
10 ui->treeWidget->addTopLevelItem(minItem);
11 ui->treeWidget->addTopLevelItem(zhiItem);
12 //创建(子)节点
13 QStringList heroL1;
14 heroL1<<"刚被猪"<<"刚被猪简介...";
15 QTreeWidgetItem * l1 = new QTreeWidgetItem(heroL1);
16 //添加到树控件
17 liItem->addChild(l1);
运行结果:
- P27. QTableWidget控件(创建了新项目)
- (ui界面)Item Widgets (Item-Based) -> Table Widget
1 //TableWidget控件
2 //设置列数
3 ui->tableWidget->setColumnCount(3); //设置3列 tableWidget是ui中树控件的变量名
4 //设置水平表头
5 ui->tableWidget->setHorizontalHeaderLabels(QStringList()<<"姓名"<<"性别"<<"年龄");
6 //设置行数
7 ui->tableWidget->setRowCount(5); //设置5行
8 //设置正文
9 //ui->tableWidget->setItem(0,0,new QTableWidgetItem("亚瑟")); //括号里第三个位置的匿名函数为什么+new? 因为第三个位置要求是QTableWidgetItem*
10 QStringList nameList;
11 nameList<<"亚瑟"<<"赵云"<<"张飞"<<"关羽"<<"花木兰";
12 QList<QString> sexList; //QStringList 等价于 QList<QString>
13 sexList<<"男"<<"男"<<"男"<<"男"<<"女";
14 for(int i=0;i<5;i++) //i代表行数
15 {
16 int col = 0; //col代表列数
17 ui->tableWidget->setItem(i,col++,new QTableWidgetItem(nameList[i]));
18 ui->tableWidget->setItem(i,col++,new QTableWidgetItem(sexList.at(i))); //.at(i)和[i]的作用差不多,区别就是数组越界的时候的处理
19 ui->tableWidget->setItem(i,col++,new QTableWidgetItem(QString::number(i+18))); //int转QString
20 }
运行结果:
- P28. 其他常用控件介绍
- Containers -> Scroll Area:滚动区域;如果往这个区域的东西放多了就会出现滚动条
- Containers -> Tool Box:类似于QQ分组那样的控件
如何修改控件里的名字:选中控件 -> 右下角"currentItemText"中修改
如何往Tool Box中添加新的分组:右上角右键此Tool Box控件 -> 选“插入页”(插入到之前和之后都可以,之前之后是基于你选择的分组)
- Containers -> Tab Widget:类似于网页窗口的控件
如何修改控件里的名字:选中控件 -> 右下角"currentTabText"中修改
- Containers -> Stacked Widget:可以实现页面切换的控件
测试案例:往界面中拖一个"Stacked Widget",把刚才的"Scroll Area""Tool Box""Tab Widget"分别拖到"Stacked Widget"里面的三个不同的界面中;然后"Stacked Widget"旁边放三个按钮,实现点指定按钮切换到指定页面
界面预览:
代码:
1 //栈控件使用
2 //设置默认定位到scrollArea
3 ui->stackedWidget->setCurrentIndex(1); //"stackedWidget"是控件的变量名;"setCurrentIndex"是设置页面的索引值:stackedWidget中的每个不同的页面都有自己的索引值,索引值具体为多少可以看(ui界面切换到你要查看的页面)ui编辑界面右下角的"currentIndex"
4 //scrollArea按钮
5 connect(ui->btn_scrollArea,&QPushButton::clicked,this,[=](){
6 ui->stackedWidget->setCurrentIndex(1);
7 });
8 //toolBox按钮
9 connect(ui->btn_toolBox,&QPushButton::clicked,this,[=](){
10 ui->stackedWidget->setCurrentIndex(2);
11 });
12 //tabWidget按钮
13 connect(ui->btn_tabWodget,&QPushButton::clicked,this,[=](){
14 ui->stackedWidget->setCurrentIndex(0);
15 });
- Containers -> Dock Widget:浮动窗口
- Input Widgets -> Combo Box:下拉框
1 //下拉框
2 ui->comboBox->addItem("奔驰"); //"comboBox"是添加的下拉框的变量名
3 ui->comboBox->addItem("宝马");
4 ui->comboBox->addItem("拖拉机");
5
6 //点击按钮 选中拖拉机选项
7 connect(ui->btn_selecttlj,&QPushButton::clicked,this,[=](){
8 //第一种方法
9 //ui->comboBox->setCurrentIndex(2);
10 //第二种方法
11 ui->comboBox->setCurrentText("拖拉机"); //但是这里面的文字是要在上面设置过的,没有addItem过的文字 点击按钮之后不会显示
12 });
- Input Widgets -> Line Edit:单行输入框;"echoMode"可以改变输入模式(密码,正常...)
- Input Widgets -> Text Edit:可输入多行文本(可以加粗 倾斜 下划线等)
- Input Widgets -> Plain Text Edit:纯文本
- Input Widgets -> Spin Box:数字的加减
- Input Widgets -> Time Edit, Date Edit, Date/Time Edit
- Input Widgets -> Horizontal Scroll Bar, Vertical Scroll Bar, Horizontal Slider, Vertical Slider:水平或竖直的滚动条
- Display Widgets -> Label:
//利用QLabel显示图片
ui->label->setPixmap(QPixmap(":/QtRes/03.jpeg")); //"label"是添加的Label的变量名
如果图片没有在label中显示全,可以在ui编辑界面中把"scaledContents"勾选上
1 //利用QLabel显示gif动图
2 QMovie * movie = new QMovie(":/QtRes/06.gif");
3 ui->lbl_movie->setMovie(movie); //lbl_movie是变量名
4 //此时运行还不会显示
5 //播放动图
6 movie->start();
(〃>_<;〃)(〃>_<;〃)(〃>_<;〃)