前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Qt入门系列(二)

Qt入门系列(二)

作者头像
用户9831583
发布2022-06-16 15:24:17
1.9K0
发布2022-06-16 15:24:17
举报
文章被收录于专栏:码出名企路

文章首发在博主知乎


作业1

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

步骤:

1.新建一个QMainWindow项目

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

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

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

在Q.cpp中实现

代码语言:javascript
复制
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
复制
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
复制
  //状态兰,也只能有一个
  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
复制
   //使用添加资源文件 “: + 前缀名 +文件名”
    ui->actionnew->setIcon(QIcon(":/data/01.pgm"));
    ui->actionopen->setIcon(QIcon(":/data/02.pgm"));

结果显示:

4.4 添加对话框

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

继续上面代码:

代码语言:javascript
复制
    //点击新建按钮,弹出一个对话框
    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
复制
 //消息对话框
      //错误对话框
     // 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
复制
      //其他标准对话框
      //颜色对话框
     // 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
复制
    //设置默认男
    ui->rbtnMan->setChecked(true);
    //选中女后打印信息
    connect(ui->rbtnWoman,&QRadioButton::clicked,[=](){
        qDebug()<<"选中女!";
    });

3.Check Box

多选按钮,可以多选

问卷调查等

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

        qDebug()<<state;
    });

显示:

5.3 Item Widgets

1.List Widget

添加文本框,比如诗

代码语言:javascript
复制
 //利用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
复制
//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
复制
   //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 删除。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 4. QMainWindow
  • 4.1 菜单栏和工具栏
  • 4.2 状态栏和浮动窗口
  • 4.3 添加资源文件
  • 4.4 添加对话框
  • 4.5 消息对话框
  • 4.6 其他标准对话框
  • 5. 界面布局
  • 5.1 登录界面
  • 5.2 控件-按钮
  • Button
  • 1.tool button
  • 2.Radio Button
  • 3.Check Box
  • 5.3 Item Widgets
  • 1.List Widget
  • 2.Tree Widget
  • 3.table Widget
  • 6. 其他控件
  • 1.Scroll Area
  • 2.Tool Box
  • 3.Tab Widget
  • 4.Stacked Widget
相关产品与服务
腾讯问卷
腾讯问卷是专业的在线问卷调查平台,支撑了腾讯核心业务的⽤户、市场、产品研究工作。平台提供基于数据收集的专业调查研究解决方案,覆盖问卷调查、信息上报、在线测评、在线考试、360度评估、投票打卡等工作场景,致力于为客户提供高效的洞察决策工具。同时平台还拥有超百万级的真实样本用户,可以提供高效、精准的问卷有偿投放服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档