基础部分
创建新项目:QWidget,QMainWindow,QDialog
QMainWindow继承自QWidget,多了菜单栏;
QDialog继承自QWidget,多了对话框
QMainWindow 菜单栏和工具栏:
Bar:
菜单栏:QMenuBar,菜单:QMenu
//重置窗口大小
resize(600,400);
//菜单栏创建(菜单栏最多只能有一个)
QMenuBar * bar = menuBar();
//将菜单栏放入到窗口中
setMenuBar(bar);
//创建菜单
QMenu * filename= bar->addMenu("文件");
QMenu * editname= bar->addMenu("编辑");
QAction * newAction = filename->addAction("新建");
//添加分割线
filename->addSeparator();
//增加子菜单的内容
QAction * OpenAction = filename->addAction("打开");
//设置中心部件 只能有一个(这个可加可不加)
QTextEdit *edit = new QTextEdit(this);
setCentralWidget(edit);
工具栏:QToolBar,
状态栏:QStatusBar();
浮动窗口:QDockWidget 可以有多个
对话框:
消息对话框QMessage:错误对话框(critical),信息对话框(information),问题对话框(question),警告
选择颜色(QColorDialog):
选择文件或目录(QFileDialog):
...还有几个其他的标准对话框
按钮组
pushButton 显示文字
//lambda表达式(C++11特性):[](){};
connect(mybtn,&MyPushButton::clicked,[=](){
this->close();
});
//点击新建按钮,弹出对话框
connect(ui->actionnew,&QAction::triggered,[=](){
//对话框
QDialog dlg(this);
dlg.exec();
});
ToolButton 可用来显示图片
单选: Radio Button
多选:check Box
(group box 可将选项button放在一起(单选/多选))
Item Views(Model-base)
是基于其他模组的,例如数据库之类。不常用
Item Widgets (Item-base):
表格控件:
控件:QListWidget(图片部件标注1的部分)
List Widget (分行显示):每一行:QListWidgetItem ,然后加入(addItem)到ui的listwidget控件中
//利用ListWidget逐行显示
QListWidgetItem *item = new QListWidgetItem("one");
//将第一行
ui->listWidget->addItem(item);
item->setTextAlignment(Qt::AlignHCenter);
QStringList list;
list<<"456"<<"7931"<<"46913";
list.append("93");
list.insert(6,"6666");
ui->listWidget->addItems(list);
控件:QTreeWidget树控件(图片部件标注2的部分)
实现树列介绍,
//利用TreeWidget树控件使用
ui->treeWidget->setHeaderLabels(QStringList()<<"英雄"<<"英雄介绍");
QTreeWidgetItem * item_li = new QTreeWidgetItem(QStringList()<<"力量");
QTreeWidgetItem * item_min = new QTreeWidgetItem(QStringList()<<"敏捷");
QTreeWidgetItem * item_zhi = new QTreeWidgetItem(QStringList()<<"智力");
//加载顶层的节点
ui->treeWidget->addTopLevelItem(item_li);
ui->treeWidget->addTopLevelItem(item_min);
ui->treeWidget->addTopLevelItem(item_zhi);
//追加子节点
QStringList herpL1;
herpL1<<"英雄1"<<"技能点1,技能点2";
QTreeWidgetItem * L1 = new QTreeWidgetItem(herpL1);
item_li->addChild(L1);
控件:QTableWidget控件(图片部件标注3的部分)
//利用TableWidget控件使用(表格)
//设置列数
ui->tableWidget->setColumnCount(3);
//设置水平表头
ui->tableWidget->setHorizontalHeaderLabels(QStringList ()<<"姓名"<<"性别"<<"年龄");
//设置行数
ui->tableWidget->setRowCount(5);
//设置正文(第一行第一列)
//ui->tableWidget->setItem(0,0,new QTableWidgetItem("人物1"));
QStringList namelist;
namelist<<"人物1"<<"人物2"<<"人物3"<<"人物4";
QStringList sexlist;
sexlist << "女1" <<"男1"<<"男1"<<"女2"; //此处使用"女1"
for(int i=0;i<4;i++)
{
int col=0;
ui->tableWidget->setItem(i,col++,new QTableWidgetItem(namelist[i]));
ui->tableWidget->setItem(i,col++,new QTableWidgetItem(sexlist[i]));
ui->tableWidget->setItem(i,col++,new QTableWidgetItem(QString::number(i+18)));
}
其他常用控件:(Containers容器)
Group Box 分组的部件(直接在ui中拖动设置即可)(一般设置页面排版时用到,例如在单选/多选框)
Scroll Area 滚动的区域,滚动条(直接在ui中拖动设置即可)(图片部件标注4的部分)
ToolBox 分页(直接在ui中拖动设置即可)(图片部件标注5的部分)
Tab Widget 分页(直接在ui中拖动设置即可)(图片部件标注6的部分)
stacked widget 切换页面(调试时直接在ui中拖动设置即可,但是使用调用时需使用栈空间的索引进行切换),(图片部件标注7的部分)
例如:开发中有可识别的切换按钮,但是程序中切换需要通过新增按钮来进行切换(setCurrentIndex)
//栈控件的使用
//设置默认值页面
ui->stackedWidget->setCurrentIndex(0);
connect(ui->pushButton_stackW_1,&QPushButton::clicked,[=](){
ui->stackedWidget->setCurrentIndex(0); //定位到栈空间的索引
});
connect(ui->pushButton_stackW_2,&QPushButton::clicked,[=](){
ui->stackedWidget->setCurrentIndex(1); //定位到栈空间的索引
});
connect(ui->pushButton_stackW_3,&QPushButton::clicked,[=](){
ui->stackedWidget->setCurrentIndex(2); //定位到栈空间的索引
});
Frame是一个边框
其他常用控件:(Input Widget)
Frame是一个边框
(Input Widget)
Combo Box 下拉框:(直接在ui中拖动设置即可)(图片部件标注1的部分)
//comboBox下拉框
ui->comboBox->addItem("车1");
ui->comboBox->addItem("车2");
ui->comboBox->addItem("车3");
//点击按钮,选中车三选项
connect(ui->pushButton,&QPushButton::clicked,[=](){
//ui->comboBox->setCurrentIndex(2);
//或者直接输入文字(在确定有该选项的情况下)
ui->comboBox->setCurrentText("车3");
});
fontComboBox 字体下拉框(图片部件标注2的部分)
lineEdit 单行编辑框(图片部件标注3的部分)
TextEdit 多行编辑框(可改变字体颜色形式等)(图片部件标注4的部分)
Plain TextEdit 纯文本多行编辑框
spin box 逐个增减输入框(图片部件标注5的部分)
Double spin box 加小数点的(图片部件标注6的部分)
Time Edit 时间输入框(图片部件标注7的部分)
dateEdit 日期输入框
dateTimeEdit 时间和日期输入框
horizontalScrollBar 水平滑动条
verticalScrollBar 竖直滑动条
horizontalSlider 水平滑动条(可与spin box进行组合)
verticalSlider 竖直滑动条(可与spin box进行组合)
(Display widget)显示标签
label :可显示文字和图片(首先需要把图片添加到资源文件中,然后程序添加显示图片)
//在lable中显示图片(图片提前加载到项目资源文件res中)
ui->label->setPixmap(QPixmap(":/1.jpg"));
//在lable中也可以放动图
QMovie * movie = new QMovie(":/one.gif"); //注意后缀需要是gif
ui->label->setMovie(movie);
//播放动图
movie->start();