本文共 6405 字,大约阅读时间需要 21 分钟。
1 QMainWindow
QMainWindow是一个为用户提供主窗口程序的类,包含一个菜单栏(menu bar),多个工具栏(tool bars),多个锚接部件(dock widgets)(悬浮窗口),一个状态栏(status bar)以及一个中心部件(central widget)
只能有一个的set,可以有多个的是add;
每一个都得加头文件;
1.1菜单栏
//菜单栏最多只有一个。 //菜单栏创建,创建菜单栏对象bar,MenuBar已经在对象树中了 QMenuBar *bar= menuBar(); //将菜单栏放入到窗口中 setMenuBar(bar); //创建菜单 QMenu *fileMenu = bar->addMenu("文件"); QMenu *editMenu = bar->addMenu("编辑"); //创建菜单项 QAction * newAcition = fileMenu->addAction("新建"); //添加分隔线 fileMenu->addSeparator(); QAction * openAction = fileMenu->addAction("打开");
1.2工具栏
//工具栏 可以有多个 QToolBar * toolBar = new QToolBar(this); //指定父类 addToolBar(Qt::LeftToolBarArea,toolBar); //默认停靠区域 //后期设置 只允许左右停靠 //toolBar ->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea); //设置浮动 toolBar->setFloatable(false); //设置移动(总开关) toolBar->setMovable(false); //工具栏设置内容 toolBar->addAction(newAcition); //添加分割线 toolBar->addSeparator(); toolBar->addAction(openAction); //工具栏和菜单栏都有新建和打开,弄一个指针,后期直接设置 //工具栏中添加控件 (按钮也属于控价) QPushButton *btn = new QPushButton("11",this); toolBar->addWidget(btn);
1.3状态栏(标签信息)
//状态栏 最多有一个 QStatusBar *stBar = new QStatusBar(); //设置到窗口中 setStatusBar(stBar); //放标签控件 QLabel * label = new QLabel("提示信息",this); //把标签放上去 stBar->addWidget(label); QLabel * label2 = new QLabel("右侧提示信息",this); stBar->addPermanentWidget(label2);
1.4铆接部件=浮动部件
//锚接部件 浮动窗口 可以有多个(围绕着中心部件) QDockWidget * dockWidget = new QDockWidget("浮动",this); addDockWidget(Qt::BottomDockWidgetArea,dockWidget); //后期设置停靠区域,只允许上下 dockWidget->setAllowedAreas(Qt::TopDockWidgetArea | Qt::BottomDockWidgetArea);
1.5中心部件
//设置中心部件 只能一个 QTextEdit * edit = new QTextEdit(this); setCentralWidget(edit);
2 资源文件
2.1 资源文件添加
2.1.1新建资源文件
2.1.2 把图片都放到工程文件下,新建一个Image
2.1.3再次打开,加入资源文件
右键点击-》open in editor -》new prefix->new file->选中图片
3.1.4使用——设置图标
":+前缀名+文件名“
// //本地路径(不好)// ui->actionnew->setIcon(QIcon("E:/QT/project/02_QtSource"));//文件路径用反斜杠 //使用添加Qt资源 ":+前缀名+文件名"(使用Qt资源好) ui->actionnew->setIcon(QIcon(":/new/prefix1/Image/20230322171117.jpg")); ui->actionopen->setIcon(QIcon(":/new/prefix1/Image/card.jpg"));
3 对话框
3.1点击一个按钮,弹出一个对话框
(1)模态对话框-阻塞;
(2)非模态对话框,防止一闪而过,创建堆区;
及时删除堆区 :dlg2->setAttribute(Qt::WA_DeleteOnClose);//55号 属性
//点击新建一个按钮,弹出一个对话框 connect(ui->actionnew,&QAction::triggered,[=](){ //对话框分类 //模态对话框(不可以对其他窗口进行操作),非模态对话框(可以对其他窗口进行操作)// //创建模态对话框// QDialog dlg(this);// dlg.resize(200,100);// dlg.exec(); //创建模态对话框// qDebug()<<"模态对话框弹出了"; //创建非模态对话框 QDialog * dlg2=new QDialog(this); //创建在堆上就不会闪现消失。 //虽然设置了父类,但是只有关闭主窗口才会析构,所以新弹出的非模态窗口要加一个关闭自己删除 dlg2->setAttribute(Qt::WA_DeleteOnClose);//55号 属性 dlg2->resize(200,100); dlg2->show(); //创建非模态对话框 qDebug()<<"非模态对话框弹出了";
3.2标准对话框(系统提供的)
3.2.1消息对话框
(1)QMessageBox 中的静态成员函数,创建对话框
(2)参数1 父亲,参数2 标题 ,参数3 显示内容,参数4 按键类型,参数5 默认关联回车按键
(参数5只在提问对话框中有用)
(3)返回值standbutton,可以利用返回值判断用户的输入。
//消息对话框// //错误对话框// QMessageBox::critical(this,"critical","错误");// //信息对话框// QMessageBox::information(this,"info","信息");// //提问对话框// //参数1 父亲 参数2 标题 参数3 提示内容 参数4 按键类型 参数5 默认关联回车按键// if (QMessageBox::Save == QMessageBox::question(this,"ques","提问",QMessageBox::Save|QMessageBox::Cancel))// {// qDebug()<<"选择的是保存";// //可以在这写选择保存后的操作// }// else// {// qDebug()<<"选择的是取消";// } //警告对话框 QMessageBox::warning(this,"warn","警告");
3.2.2其他对话框(记得使用前添加头文件)
//其他标准对话框// //颜色对话框// QColor color = QColorDialog::getColor(QColor(255,0,0)); //看函数的返回值是什么类型,就自定义一个这个类型的对象去接收它// qDebug()<<"r="<<<"g="< <<"b="<
4 界面布局(UI界面里修改)
4.1拖拽
4.2布局(利用布局方式,给窗口进行美化)
4.2.1布局(选取Widget进行布局)
- 水平布局
- 垂直布局
- 栅格布局 几行几列
①左侧 widget拖一个窗口
②把用户名 和 编辑框 放到窗口里
③选中,点击上侧 水平对齐
④布局过的窗口右侧无红色标记,没布局的有红色标
⑤ 加弹簧 Spacer
4.2.2弹簧固定默认控件与各窗口间距
编辑框密码passwprd
5 控件
5.1Buttons 按钮控件
;
//设置单选按钮 男 为默认选中 ui->rBtnMan->setChecked(true); //选中女后,打印信息 connect(ui->rBtnWoman,&QRadioButton::clicked,[=](){ qDebug()<<"nv"; }); //多选按钮 2是选中 0是未选中 connect(ui->cBox,&QCheckBox::stateChanged,[=](int state){ qDebug()<
5.2 QlistWidget 列表容器
// //利用listWidget 写诗// QListWidgetItem *item = new QListWidgetItem("chrdw");// //将一行诗放入到listwidget控件中// ui->listWidget->addItem(item);// //居中// item->setTextAlignment(Qt::AlignHCenter); //字符串数组 QStringList list; list <<"chrdw"<<"hdhxt"<<"szbzc"<<"lljxk"; ui->listWidget->addItems(list);
5.3 QTreeWlidget 树控件
//treeWidget树控件使用 //设置水平头 QStringList()设置匿名对象 ui->treeWidget->setHeaderLabels(QStringList()<<"hero"<<"hero introduction"); QTreeWidgetItem *liItem = new QTreeWidgetItem(QStringList()<<"liliang"); QTreeWidgetItem *minItem = new QTreeWidgetItem(QStringList()<<"minjie"); QTreeWidgetItem *zhiItem = new QTreeWidgetItem(QStringList()<<"zhihui"); //加载顶层的节点 ui->treeWidget->addTopLevelItem(liItem); ui->treeWidget->addTopLevelItem(minItem); ui->treeWidget->addTopLevelItem(zhiItem); //追加子节点 QStringList heroL1; heroL1<<"gangbeizhu"<<"qianpaitanke"; QTreeWidgetItem *l1 = new QTreeWidgetItem(heroL1); liItem->addChild(l1);
5.4TableWidget 表格控件
//tablewidget 控件 //设置列数column ui->tableWidget->setColumnCount(3); //设置水平表头 ui->tableWidget->setHorizontalHeaderLabels(QStringList()<<"xingming"<<"xingbie"<<"nianling"); //设置行数row ui->tableWidget->setRowCount(5); //设置正文 ui->tableWidget->setItem(0,0,new QTableWidgetItem("yase")); QStringList nameList; nameList<<"yase"<<"zhaoyun"<<"zhangfei"<<"huamulan"; QListsexList; sexList<<"nan"<<"nan"<<"nan"<<"nv";//for 循环有问题// for (int i=0;i<5;i++)// {// int col=0;// ui->tableWidget->setItem(i,col++,new QTableWidgetItem(nameList[i]));//索引数据,两种方式,越界,程序退出// ui->tableWidget->setItem(i,col++,new QTableWidgetItem(sexList.at(i)));//索引数据,at()更好,越界可以跳出异常// //int 转 QString// ui->tableWidget->setItem(i,col++,new QTableWidgetItem(QString::number(i+18)));// }
5.4 其他控件
5.4.1stackWidget栈控件(用按钮去控制切换不同控件页面)
5.4.2 ComBox 下拉框
//下拉框 ui->comboBox->addItem("benchi"); ui->comboBox->addItem("baoma"); ui->comboBox->addItem("tuolaji");
5.4.3 QLable 可以显示图片,动图(gif)
转载地址:https://blog.csdn.net/qq_49105197/article/details/130131032 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!