Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Qt入门系列(二)

Qt入门系列(二)

作者头像
用户9831583
发布于 2022-06-16 07:24:17
发布于 2022-06-16 07:24:17
2K00
代码可运行
举报
文章被收录于专栏:码出名企路码出名企路
运行总次数:0
代码可运行

文章首发在博主知乎


作业1

需求:点击按钮打开,弹出一个新的菜单,单击按钮关闭,关闭新开的菜单

步骤:

1.新建一个QMainWindow项目

2.在1的基础上新建一个类QMainWIndow2

在Q.h中添加Q2对象和定义函数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//实例化对象
  private:
    QPushButton *btn1=new QPushButton("打开",this);
    QPushButton *btn2=new QPushButton("关闭",this);
    MainWindow2 w2;
    //实例化方法
  private slots:
    void showMainWindow2();
    void closeMainWIndow2();

在Q.cpp中实现

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{

    setFixedSize(600,600);
    //设置第一个pushbutton的属性
    btn1->move(100,100);
    btn1->resize(100,50);

    connect(btn1,&QPushButton::clicked,this,&MainWindow::showMainWindow2);
  

    //第二个pushbutton的属性
    btn2->move(100,200);
    btn2->resize(100,50);
    connect(btn2,&QPushButton::clicked,this,&MainWindow::closeMainWIndow2);
}


 void MainWindow::showMainWindow2()
{
     w2.show();
 }

 void MainWindow::closeMainWIndow2()
 {
     w2.close();
 }

结果显示:

4. QMainWindow

4.1 菜单栏和工具栏

Ubuntu下不显示菜单栏解决办法:

blog.csdn.net/z95295740

解决Ubuntu下Qt不能输入中文的方法:

blog.csdn.net/future_ai

中文字体下载链接:

github.com/fcitx/fcitx-

Ubuntu在root下操作:

360doc.com/content/16/0

基本操作:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{

     //窗口大小
    resize(600,400);

    //菜单栏只能有一个
    //创建菜单栏
    QMenuBar *bar=menuBar();
    //菜单栏放在系统中
    setMenuBar(bar);

    //创建菜单
    QMenu *fileMenu=bar->addMenu("文件");
    QMenu *editMenu=bar->addMenu("编辑");

    //创建菜单项
    QAction *newAction=fileMenu->addAction("新建");
    //添加分割线
    fileMenu->addSeparator();
    QAction *openAction= fileMenu->addAction("打开");

    //工具栏可以有多项
    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);

}

MainWindow::~MainWindow()
{

}

如图:

4.2 状态栏和浮动窗口

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  //状态兰,也只能有一个
  QStatusBar *stBar=statusBar();
   //设置到窗口中
  setStatusBar(stBar);
  //放标签控件
  QLabel *label=new QLabel("提示信息",this);
  stBar->addWidget(label);
  //设置在右侧提示信息
  QLabel *label2=new QLabel("右侧提示信息",this);
  stBar->addPermanentWidget(label2);

  //浮动窗口 可以有多个
  QDockWidget *dockWider=new QDockWidget("浮动",this);
  addDockWidget(Qt::BottomDockWidgetArea,dockWider);

 //设置后期停靠区域,只允许上下停靠
  dockWider->setAllowedAreas(Qt::BottomDockWidgetArea | Qt::TopDockWidgetArea);
  //设置中心部件 ,只能有一个
  QTextEdit *edit=new QTextEdit(this);
  setCentralWidget(edit);

显示:

4.3 添加资源文件

ui->自动手动添加

1.把文件拿出来拷贝到项目目录下

选中mainWindow.cpp右键->在Explor中显示->粘贴进来(显示包含的目录)

2.在Q1_Resource最上面右键->添加新文件->Qt->qt resource file->设置名字->生成res.qrc

3.离开res.qrc后无法重新返回,此时右键res.qrc->open in editor->添加前缀->添加文件(全选1中的图片打开,此时全部加载进去)->点击编译

4.编辑代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   //使用添加资源文件 “: + 前缀名 +文件名”
    ui->actionnew->setIcon(QIcon(":/data/01.pgm"));
    ui->actionopen->setIcon(QIcon(":/data/02.pgm"));

结果显示:

4.4 添加对话框

需求:点击新建按钮,弹出一个对话框

继续上面代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    //点击新建按钮,弹出一个对话框
    connect(ui->actionnew,&QAction::triggered,[=](){
        //对话框分类
        //模态对话框(不可以对其他窗口进行操作),非模态对话框(可以对其他窗口进行操作)
        //模态创建 阻塞
        QDialog dlg(this);
        dlg.resize(200,100);
        dlg.exec();

        qDebug()<<"模态对话框建立";

        //非模态,创建
        QDialog dlg2(this);//栈上自动销毁
        dlg2.show();

        QDialog *dlg3=new QDialog(this);
        dlg3->resize(200,100);
        dlg3->show();
        //设置属性,关闭时候释放,防止内存泄漏
        dlg3->setAttribute(Qt::WA_DeleteOnClose);
        qDebug()<<"非模态创建";

显示:

4.5 消息对话框

比如弹出的警告,消息,提问等

继续上文代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 //消息对话框
      //错误对话框
     // QMessageBox::critical(this,"critical","错误");
      //信息对话框
    //  QMessageBox::information(this,"informatio","信息");
      //提问对话框
     if(QMessageBox::Save== QMessageBox::question(this,"ques","提问",
                                                  QMessageBox::Save |                                                                               QMessageBox::Cancel))
     {
         qDebug()<<"保存";
         //执行工作
     }
     else
     {
         qDebug()<<"取消";
         //执行工作
     }

显示:

4.6 其他标准对话框

继续上文代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
      //其他标准对话框
      //颜色对话框
     // QColor color=QColorDialog::getColor(QColor(255,0,0));
     // qDebug()<<"r= "<<color.red()<<"g= "<<color.green()<<"b= "<<color.blue();

      //文件对话框
      //参数1 父亲,参数3 标题,参数3 打开路径,参数4 过滤文件格式
      //返回值是选取的路径
     QString str=QFileDialog::getOpenFileName(this,"打开文件","/home/lyy","(*.txt)");
    qDebug()<<str;

显示:

5. 界面布局

5.1 登录界面

ui界面编程

步骤:

1.选择两次 Label: Line Edit,分别改名字

2.选择两个Push Button

3.选择Widget进行水平对齐

4.选择最大的Widget对以上三个进行竖值对齐

5.选择Horizontal Spacer左右各一个弹簧,进行居中

6.但是登录和退出之间太近了,再插一个弹簧。可以改弹簧属性

7.对以上布局不满意,选中最大的框框,点击打破布局

8.选择Widget,将四个一起放进去,点击删格布局

9.点击各个按钮进行属性设定,比如窗口固定大小,密码隐藏等

显示:

5.2 控件-按钮

Button

1.tool button

添加图片,在ui中天骄

添加资源后,点击按钮,查找icon中添加资源后插入图片

实现左边是图像,右边是用户名

2.Radio Button

单选框,只能单选

比如男女,已婚未婚,选择Group Box进行分组,再做个垂直布局

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    //设置默认男
    ui->rbtnMan->setChecked(true);
    //选中女后打印信息
    connect(ui->rbtnWoman,&QRadioButton::clicked,[=](){
        qDebug()<<"选中女!";
    });

3.Check Box

多选按钮,可以多选

问卷调查

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    //多选按钮,2是选中,0是未选中
    connect(ui->CBox,&QCheckBox::stateChanged,[=](int state){

        qDebug()<<state;
    });

显示:

5.3 Item Widgets

1.List Widget

添加文本框,比如诗

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 //利用listWidget写诗
    QListWidgetItem *ll=new QListWidgetItem("处和日当无");
    //将一行放入listWidget
    ui->listWidget->addItem(ll);
    //设置水平居中
    ll->setTextAlignment(Qt::AlignHCenter);

    //第二种方法添加
    //QStringList list<string>
    QStringList list;
    //重载类一个左移运算符
    list<<"处和日当无"<<"韩地喝下图"<<"设置盘中参"<<"丽丽戒心库";
    ui->listWidget->addItems(list);

显示:

2.Tree Widget

设置带树,子节点的界面

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//treeWidget
    //设置水平头
    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 heroli;
    heroli<<"刚被猪"<<"坦克,8公里射程";
    QTreeWidgetItem *ll=new QTreeWidgetItem(heroli);
    liItem->addChild(ll);

显示:

3.table Widget

做成类似于课程表那种

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   //table widget
    //做表格
    //设置列数
    ui->tableWidget->setColumnCount(3);
    //设置水平表头
    ui->tableWidget->setHorizontalHeaderLabels(QStringList()<<"姓名"<<"性别"<<"年龄");
   //设置行数
    ui->tableWidget->setRowCount(5);
    //设置正文,0行0列
   // ui->tableWidget->setItem(0,0,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[i]));
          //int 转Qstring
          ui->tableWidget->setItem(i,col++,new QTableWidgetItem(QString::number(i+18)));
    }

显示:

6. 其他控件

1.Scroll Area

滚动区域框

2.Tool Box

3.Tab Widget

网页

4.Stacked Widget

笔记如下:

参考:黑马程序员

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-03-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 码出名企路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
QT入门学习——从信号和槽到对话框,各种控件以及自定义控件
2.4默认创建有窗口类,yWidget,基类有三种选择:QWidget、QMainWindowQDialog
Arya
2024/10/31
5510
QT入门学习——从信号和槽到对话框,各种控件以及自定义控件
【QT】多元素控件
xxWidget 和 xxView 之间的区别,以 QTableWidget 和 QTableView 为例:
YoungMLet
2024/07/16
1990
【QT】多元素控件
【QT】Qt 窗口 (QMainWindow)
QMainWindow 是一个为用户提供主窗口程序的类,继承自 QWidget 类,并且提供了一个预定义的布局。QMainWindow 包含一个菜单栏(menu bar)、多个工具栏(tool bars)、多个浮动窗口(铆接部件)(dock widgets)、⼀个状态栏(status bar) 和⼀个 中心部件(central widget),它是许多应用程序的基础,如文本编辑器,图片编辑器等。如下图为 QMainwindow 中 各组件所处的位置:
YoungMLet
2024/07/16
4880
【QT】Qt 窗口 (QMainWindow)
Qt 学习记录
[],标识一个 Lambda 的开始,这部分必须存在,不能省略。外部变量访问方式说明符只能使用定义 Lambda 为止时 Lambda 所在作用范围内可见的局部变量(包括 Lambda 所在类的 this)。外部变量访问方式说明符有以下形式:
小简
2023/01/04
7.3K0
Qt 学习记录
C/C++ Qt TreeWidget 单层树形组件应用
TreeWidget 目录树组件,该组件适用于创建和管理目录树结构,在开发中我们经常会把它当作一个升级版的ListView组件使用,因为ListView每次只能显示一列数据集,而使用TableWidget组件显示多列显得不够美观,此时使用Tree组件显示单层结构是最理想的方式,本章博文将通过TreeWidget实现多字段显示,并增加一个自定义菜单,通过在指定记录上右键可弹出该菜单并对指定记录进行操作。
王瑞MVP
2022/12/23
1K0
C/C++ Qt TreeWidget 单层树形组件应用
C/C++ Qt TableWidget 表格组件应用
TableWidget 表格结构组件,该组件可以看作是TreeWidget树形组件的高级版,表格组件相比于树结构组件灵活性更高,不仅提供了输出展示二维表格功能,还可以直接对表格元素直接进行编辑与修改操作,表格结构分为表头,表中数据两部分,表格结构可看作一个二维数组,通过数组行列即可锁定特定元素,如下代码是针对表格结构的基本使用方法,分别实现了表头数据的初始化,元素的插入等基本操作。
王瑞MVP
2022/12/23
9000
C/C++ Qt TableWidget 表格组件应用
C/C++ Qt Tree与Tab组件实现分页菜单
虽然TreeWidget组件可以实现多节点的增删改查,但多节点操作显然很麻烦,在一般的应用场景中基本上只使用一层结构即可解决大部分开发问题,TreeWidget组件通常可配合TabWidget组件,实现一个类似于树形菜单栏的功能,当用户点击菜单栏中的选项时则会跳转到不同的页面上。
王瑞MVP
2022/12/23
6270
C/C++ Qt Tree与Tab组件实现分页菜单
QtreeWidget_遍历qtreewidget
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/10
1K0
QtreeWidget_遍历qtreewidget
C++ Qt开发:TreeWidget 树形选择组件
Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍TreeWidget树形选择组件的常用方法及灵活运用。
王瑞MVP
2023/12/19
2.1K0
C++ Qt开发:TreeWidget 树形选择组件
学习 QT 过程中的一些笔记
学习 QT 时候做的一些笔记 目录 目录 按钮常用控件 API QT 窗口体系 信号和槽 点击按钮关闭窗口 自定义信号和槽 当自定义信号和槽出现重载 无参信号和有参信号与槽连接 Lambda 表达式 利用 Lambda 表达式实现点击按钮关闭窗口 QMainWindow 菜单栏 工具栏 状态栏 标签控件 浮动窗口 核心部件 资源文件 对话框 话框分类: 标准对话框 其他标准对话框 界面布局 控件 按钮组 QListWidget 列表容器 按钮常用控件 API QPushButton * btn = new
HauHau
2022/01/12
1.2K0
C++ Qt开发:StatusBar底部状态栏组件
Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍QStatusBar底部状态栏组件的常用方法及灵活运用。
王瑞MVP
2023/12/22
1.2K0
C++ Qt开发:StatusBar底部状态栏组件
【Qt】:Dialog 对话框
模态对话框 指的是:显示后无法与父窗口进行交互,是⼀种阻塞式的对话框。使用 QDialog:: exec () 函数调用。
IsLand1314
2025/02/28
1620
【Qt】:Dialog 对话框
C/C++ Qt TreeWidget 嵌套节点操作技巧
在上一篇博文《C/C++ Qt TreeWidget 单层树形组件应用》中给大家演示了如何使用TreeWidget组件创建单层树形结构,并给这个树形组件增加了右键菜单功能,接下来将继续延申树形组件的使用,并实现对树形框多节点的各种操作,如下笔记是本人在开发中经常用到的一些基本操作技巧。
王瑞MVP
2022/12/23
1.1K0
C/C++ Qt TreeWidget 嵌套节点操作技巧
【QT】Qt窗口(下)
消息对话框是非常常见常用的界面元素,主要用于为用户提示重要信息,强制用户进行选择操作 QMessageBox类中定义了静态成员函数有四个
s-little-monster
2024/11/01
1500
【QT】Qt窗口(下)
Qt QTreeWidget 详解
QTreeWidget详细设置_qtreewidget-C/C++文档类资源-CSDN下载
全栈程序员站长
2022/11/10
1.1K0
Qt QTreeWidget 详解
C++ Qt开发:Tab与Tree组件实现分页菜单
Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍tabWidget选择夹组件与TreeWidget树形选择组件,的常用方法及灵活运用。
王瑞MVP
2023/12/16
6120
C++ Qt开发:Tab与Tree组件实现分页菜单
【QT】:QMainWindow 窗口
Qt 中的菜单栏是通过 QMenuBar 这个类来实现的。一个主窗口最多只有一个菜单栏,位于主窗口顶部、主窗口标题栏下面。
IsLand1314
2025/02/18
2140
【QT】:QMainWindow 窗口
Qt学习之路_6(Qt局域网聊天软件)
http://www.cnblogs.com/tornadomeet/archive/2012/07/04/2576355.html
bear_fish
2018/09/20
3.4K0
Qt学习之路_6(Qt局域网聊天软件)
Qt Tablewidget表格数据的导出和导入
QT里面自带的TableWidget控件可以实现表格显示的功能,刚开始学习TableWidget,只是自己提前创建好表格,规定好数据,但真正的软件不会让我们规定好数据格式。下面我们一起来看一下,如何导入xls文件,自动生成表格。
花狗Fdog
2022/01/11
3.4K0
Qt Tablewidget表格数据的导出和导入
Qt TableWidget 控件 及自定义委托
上次和大家分享了TreeWidget的简单使用,本次和大家分享下TableWidget的简单应用以及项目视图中的自定义委托。
用户5908113
2019/12/19
2.4K0
相关推荐
QT入门学习——从信号和槽到对话框,各种控件以及自定义控件
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档