Qt系列-常用控件使用整理

1、QMainWindow介绍
菜单栏最多只有一个

    //菜单栏创建 菜单栏最多只能有一个QMenuBar*bar = menuBar();//将菜单栏放入到窗口中setMenuBar(bar);//创键菜单QMenu*fileMenu=bar->addMenu("文件");QMenu*editMenu=bar->addMenu("编辑");//创建菜单项QAction*newAction=fileMenu->addAction("新建");//添加分割线fileMenu->addSeparator();QAction*openAction=fileMenu->addAction("打开");


2、工具栏及状态栏介绍
工具栏可以有多个,状态栏只能有一个

//工具栏 可以有多个QToolBar*toolBar=new QToolBar(this);addToolBar(Qt::LeftToolBarArea,toolBar);//后期设置 只允许 左右停靠toolBar->setAllowedAreas(Qt::LeftToolBarArea|Qt::RightToolBarArea);//设置浮动toolBar->setFloatable(false);//设置移动(总开关)//   toolBar->setMovable(false);//工具栏中可以设置内容toolBar->addAction(newAction);toolBar->addSeparator();toolBar->addAction(openAction);//工具栏中添加控件QPushButton*btn=new QPushButton("aa",this);toolBar->addWidget(btn);//状态栏 最多有一个QStatusBar*stBar=statusBar();//设置到窗口中setStatusBar(stBar);


3、柳接部件、浮动窗口及核心部件介绍
铆接部件 浮动窗口 可以多个
设置核心部件 只能一个
 

    //放置标签控件QLabel*label=new QLabel("提示信息",this);stBar->addWidget(label);QLabel*label2=new QLabel("提示信息",this);stBar->addPermanentWidget(label2);//铆接部件(浮动窗口)可以有多个QDockWidget*dockWidget=new QDockWidget("浮动",this);addDockWidget(Qt::BottomDockWidgetArea,dockWidget);//设置后期停靠区域,只允许上下dockWidget->setAllowedAreas(Qt::TopDockWidgetArea|Qt::BottomDockWidgetArea);//设置中心部件,只能有一个QTextEdit*edit=new QTextEdit(this);setCentralWidget(edit);


4、资源文件添加及图片应用
具体步骤:

将图片文件 拷贝到项目位置下
右键项目->添加新文件 –> Qt - > Qt recourse File - >给资源文件起名 res 生成 res.qrc
open in editor 编辑资源
添加前缀 添加文件
使用 “ : + 前缀名 + 文件名 ”

//    ui->actionnew->setIcon(QIcon("C:\\Users\\Administrator\\Desktop\\day2资料\\Doc\\Image\\Luffy.png"));//使用添加Qt资源":+前缀名+文件名"ui->actionnew->setIcon(QIcon(":/Image/Luffy.png"));ui->actionopen->setIcon(QIcon(":/Image/LuffyQ.png"));



5、对话框介绍
对话框也分模态对话框和非模态对话框

模态对话框 不可以对其他窗口进行操作 会出现阻塞(即要先处理了对话框之后才能处理别处)

QDialog dlg(this) ;dlg.exec();


非模态对话框 可以对其他窗口进行操作但会一闪而过,因此要创建到堆区中

QDialog * dlg2 = newQDialog(this);
dlg2->show();
dlg2->setAttribute(Qt::WA_DeleteOnClose);
//模态创建 阻塞
//       QDialog dlg(this);
//       dlg.resize(200,100);
//       dlg.exec();
//       qDebug()<<"模态创建";//非模态创建QDialog*dlg2=new QDialog(this);dlg2->resize(200,100);dlg2->show();dlg2->setAttribute(Qt::WA_DeleteOnClose);//55号 属性qDebug()<<"非模态创建";


6、消息对话框
QMessageBox 静态成员函数 创建对话框(错误、信息、提问、警告)
提问对话框中函数参数:
 

//参数1 父亲 参数2 标题 参数3 显示内容 参数4 按键类型 参数5 默认关联回车按键
//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()<<"选择的是取消";}

7、警告对话框
  QMessageBox::warning(this,"warning","警告");

8、颜色对话框

//        QColor color=QColorDialog::getColor(QColor(255,0,0));
//        qDebug()<<"r="<<color.red()<<"g="<<color.green()<<"b="<<color.blue();//        //文件对话框 参数1 父亲 餐数2 标题 参数3 默认打开路径 参数4 过滤文件格式
//        //返回值 选取的路径
//        QString str= QFileDialog::getOpenFileName(this,"图片","C:\\Users\\Administrator\\Desktop\\day2资料\\Doc\\Image",".png");
//        qDebug()<<str;

9、字体对话框
       

bool flag;
QFont font=QFontDialog::getFont(&flag,QFont("华文彩云",36));
qDebug()<<"字体:"<<font.family()<<"字号:"<<font.pointSize()<<"是否加粗:"<<font.bold() <<"是否倾斜:"<<font.italic();


10、QTreeWidget 树控件

  • 设置头 ui->treeWidget->setHeaderLabels(QStringList()<< “英雄”<< “英雄介绍”);
  • 创建根节点 QTreeWidgetItem * liItem = new QTreeWidgetItem(QStringList()<< “力量”);
  • 添加根节点 到 树控件上 ui->treeWidget->addTopLevelItem(liItem);
  • 添加子节点 liItem->addChild(l1);
//设置水平头ui->treeWidget->setHeaderLabels(QStringList()<<"英雄"<<"英雄介绍");QTreeWidgetItem*liItem=new QTreeWidgetItem(QStringList()<<"力量");QTreeWidgetItem*minItem=new QTreeWidgetItem(QStringList()<<"敏捷");QTreeWidgetItem*zhiItem=new QTreeWidgetItem(QStringList()<<"智力");//加载顶层的节点ui->treeWidget->addTopLevelItem(liItem);ui->treeWidget->addTopLevelItem(minItem);ui->treeWidget->addTopLevelItem(zhiItem);//追加子节点QStringList heroL1;QStringList heroL2;heroL1 << "刚被猪" << "前排坦克,能在吸收伤害的同时造成可观的范围输出";heroL2 << "船长" << "前排坦克,能肉能输出能控场的全能英雄";QStringList heroM1;QStringList heroM2;heroM1 << "月骑" << "中排物理输出,可以使用分裂利刃攻击多个目标";heroM2 << "小鱼人" << "前排战士,擅长偷取敌人的属性来增强自身战力";QStringList heroZ1;QStringList heroZ2;heroZ1 << "死灵法师" << "前排法师坦克,魔法抗性较高,拥有治疗技能";heroZ2 << "巫医" << "后排辅助法师,可以使用奇特的巫术诅咒敌人与治疗队友";QTreeWidgetItem*l1=new QTreeWidgetItem(heroL1);QTreeWidgetItem*l2=new QTreeWidgetItem(heroL2);liItem->addChild(l1);liItem->addChild(l2);QTreeWidgetItem*m1=new QTreeWidgetItem(heroM1);QTreeWidgetItem*m2=new QTreeWidgetItem(heroM2);minItem->addChild(m1);minItem->addChild(m2);QTreeWidgetItem*z1=new QTreeWidgetItem(heroZ1);QTreeWidgetItem*z2=new QTreeWidgetItem(heroZ2);zhiItem->addChild(z1);zhiItem->addChild(z2);

3、QTableWidget 表格控件

  • 设置列数 ui->tableWidget->setColumnCount(3);
  • 设置水平表头 ui->tableWidget->setHorizontalHeaderLabels(QStringList()<<“姓名”<< “性别”<< “年龄”);
  • 设置行数 ui->tableWidget->setRowCount(5);
  • 设置正文 ui->tableWidget->setItem(0,0, new QTableWidgetItem(“亚瑟”));

 

  //设置列数ui->tableWidget->setColumnCount(3);//设置水平表头ui->tableWidget->setHorizontalHeaderLabels(QStringList()<<"姓名"<<"性别"<<"年龄");//设置行数ui->tableWidget->setRowCount(5);//设置正文
//    ui->tableWidget->setItem(0,0,new QTableWidgetItem("亚瑟"));QStringList nameList;nameList<<"亚瑟"<<"赵云"<<"张飞"<<"关羽"<<"花木兰";QList<QString>sexList;sexList<<"男"<<"男"<<"男"<<"女";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(1)));//int转strinui->tableWidget->setItem(i,col++,new QTableWidgetItem(QString::number(i+18)));}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/139631.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

牛客网 -- WY28 跳石板

题目链接&#xff1a; 跳石板_牛客题霸_牛客网 (nowcoder.com) 解题步骤&#xff1a; 参考代码&#xff1a; void get_approximate(vector<int>& v,int n) {//求约数&#xff0c;从2到sqrt(n)即可&#xff0c;原因看图解//这里一定要等于sqrt(n)&#xff0c;例如16…

【网络编程】从网络编程、TCP/IP开始到BIO、NIO入门知识(未完待续...)

目录 前言前置知识一、计算机网络体系结构二、TCP/IP协议族2.1 简介*2.2 TCP/IP网络传输中的数据2.3 地址和端口号2.4 小总结 三、TCP/UDP特性3.1 TCP特性TCP 3次握手TCP 4次挥手TCP头部结构体 3.2 UDP特性 四、总结 课程内容一、网络通信编程基础知识1.1 什么是Socket1.2 长连…

Linux C语言

一、基础知识 &#xff08;一&#xff09;冯诺依曼体系 1、存储器&#xff1a;内存 存储程序的思想&#xff1a;按照存储器中指令的顺序 2、存储器的分类 1&#xff09;主存&#xff1a;内存&#xff08;C盘&#xff09; 2&#xff09;外存 3&#xff09;寄存器是cpu内部…

Excel和图片如何互相转换?有何技巧?

一、将图片转为excel表格 首先&#xff0c;打开金鸣识别网站&#xff0c;点击“点击添加需转换的图片或PDF”按钮&#xff0c;添加待识别的图片或PDF文件。 添加完待识别的图片或PDF后&#xff0c;点击“提交识别”按钮&#xff0c;程序便开始识别。 识别完成后&#xff0c;系…

Flutter之Widget生命周期

目录 初始化构造函数initStatedidChangeDependencies 运行时builddidUpdateWidget 组件移除deactivatedisposereassemble 函数生命周期说明&#xff1a;实际场景App生命周期 前言&#xff1a;生命周期是一个组件加载到卸载的整个周期&#xff0c;熟悉生命周期可以让我们在合适的…

航天科技×辰安科技 打造智慧化工园区安全保障平台

近年来&#xff0c;国内化工园区安全事故频发&#xff0c;多起化工园区重特大事故造成了严重人员财产损失的同时&#xff0c;也重创了行业的整体发展。在智能制造和工业互联网的背景下&#xff0c;建设智慧化工园区&#xff0c;使用智能化手段实现安全生产是解决当前化工园区安…

【Overload游戏引擎细节分析】视图投影矩阵计算与摄像机

本文只罗列公式&#xff0c;不做具体的推导。 OpenGL本身没有摄像机(Camera)的概念&#xff0c;但我们为了产品上的需求与编程上的方便&#xff0c;一般会抽象一个摄像机组件。摄像机类似于人眼&#xff0c;可以建立一个本地坐标系。相机的位置是坐标原点&#xff0c;摄像机的朝…

2020年下半年~2022下半年下午题易错总结

2020年下半年 试题一&#xff1a; 1.组播报文对无线网络空口的影响主要有(14) &#xff0c;随着业务数据转发的方式不同, 组播报文的抑制分别在 (15)、(16) 配置。 答案&#xff1a; &#xff08;14&#xff09;无线空口拥塞 &#xff08;15&#xff09;直连AP的交换…

瑞芯微RK3568核心板在边缘服务器产品中的应用-迅为电子

迅为RK3568核心板在边缘服务器产品中可以发挥关键作用&#xff0c;为边缘计算应用提供高性能的计算和多媒体处理能力。边缘服务器通常用于处理和存储数据&#xff0c;执行本地计算任务&#xff0c;并支持与远程云服务的通信。以下是RK3568核心板在边缘服务器产品中的应用方案&a…

项目中 .env.development 与 .env.production 的区别

文章目录 一、项目中使用此两个文件的意义二、使用方式 一、项目中使用此两个文件的意义 我们在开发项目时&#xff0c;经常会有开发环境与生产环境&#xff0c;分别会对应不同的请求地址与各种不同的变量&#xff0c;这个时候我们就可以使用 process.env 去抓取这两个文件写的…

VS使用Visual Assist添加代码说明信息

写代码时&#xff0c;我们一般需要在代码的最前面添加一些说明信息&#xff0c;作者的联系方式等等。一些高级的 IDE 工具提供修改代码模板的功能&#xff0c;这样就能够在创建新代码时自动加上版权信息。Visual Studio 虽然没有提供这样的操作界面&#xff0c;但是我们可以通过…

Linux上如何部署SpringBoot项目——手把手教会你

目录 前言 1、准备操作 1.1、Linux上安装jdk 1.2、准备MySQL数据库 1.3、打开云服务器的防火墙 1.4、准备jar包 2、部署 前言 下面是教你部署SpringBoot项目&#xff0c;jar包形式的&#xff0c;不是war包&#xff01;&#xff01;&#xff01; 1、准备操作 1.1、Linux…