QT控件应用操作学习记录

窗口基础控件操作

窗口栏

1 菜单栏

下面展示一些 菜单栏运行
头文件

#include "mainwindow.h"
#include<QMenuBar>
#include<QDebug>

设置该窗口大小和标题

this->setWindowTitle("菜单栏的介绍");
 this->resize(600,800);

新建菜单,放在主窗口

    QMenuBar *q=new QMenuBar(this);
    //将菜单栏添加到主菜单窗口下
    this->setMenuBar();

新建菜单栏,放在菜单里面

    QMenu *f1=new QMenu("文件",this);
    QMenu *f2=new QMenu("编辑",this);
    q->addMenu(f1);
    q->addMenu(f2);

新建菜单栏的菜单项,放在菜单下面,在新建和保存中间,插入一个分隔符

    QAction *b1=new QAction("新建",this);
    QAction *b2=new QAction("保存",this);
    f1->addAction(b1);
    //插入一个分割线
    f1->addSeparator();
    f1->addAction(b2);

新建菜单栏的菜单项的快捷方式

    b1->setShortcut(QKeySequence(Qt::Key_1));
    //让快捷键起作用,快捷键动起来
    connect(b1,&QAction::triggered,[=](){
        qDebug()<<"你好"<<endl;
    });

2 工具栏

头文件

#include<QToolBar>

创建工具栏,加入窗口,添加项目,是否悬浮

    //创建一个工具栏
    QToolBar *tool=new QToolBar(this);
    //将工具栏放在主窗口中
    this->addToolBar(tool);

    //新建菜单项
    QAction *c1=new QAction("新建",this);
    QAction *c2=new QAction("保存",this);
    
    //将菜单项放在工具栏中
    tool->addAction(c1);
    
    //中间放一个分割线
    tool->addSeparator();
    
    tool->addAction(c2);
    
    //此时的工具栏建立好之后,是可以进行拖动的,上下左右还有中间,五个位置。
    //设计工具栏是否悬浮
    tool->setFloatable(false);//不悬浮
    
    //设计工具栏摆放的位置:这是是只有左右可以。
    tool->setAllowedAreas(Qt::LeftToolBarArea|Qt::RightToolBarArea);

3状态栏

头文件

#include<QStatusBar>
#include<QLabel>

创建状态栏,添加到窗口,创建标签提示,添加到状态栏上。

    //创建添加一个状态栏
    QStatusBar *stat=new QStatusBar(this);
    this->setStatusBar(stat);
    
    //创建两个提示标签
    QLabel *q1=new QLabel("左侧提示信息",this);
    QLabel *q2=new QLabel("右侧提示信息",this);


    //添加左侧提示标签
    stat->addWidget(q1);
    //添加右侧提示标签
    stat->addPermanentWidget(q2);

4 柳接部件

头文件

#include<QDockWidget>
#include<QTextEdit>

柳接部件和中心部件
两个要合在一起使用,效果明显。

    //创建一个柳接部件
    QDockWidget *dock=new QDockWidget("柳接",this);
    //添加到主窗口中
    this->addDockWidget(Qt::TopDockWidgetArea,dock);
    //设计成上下停靠的状态
    dock->setAllowedAreas(Qt::TopDockWidgetArea|Qt::BottomDockWidgetArea);


    //创建柳接的中心部件,中心显示的部件
    //创建一个文本部件
    QTextEdit *text=new QTextEdit(this);
    text->setText("好好学习行不行啊\n你");
    this->setCentralWidget(text);

5添加图标

头文件

#include<QPixmap>

图标空间添加

//添加图片空间
    QPixmap pix;
    pix.load(":/food/008_米粉面条.png");

    QPixmap pix2;
    pix2.load(":/food/008_冒菜串串.png");

      //c1和b1都是菜单项
    QAction *c1=new QAction("新建",this);
     QAction *b1=new QAction("新建",this);

    c1->setIcon(QIcon(pix));

    b1->setIcon(QIcon(pix2));

对话框

头文件

#include<QDebug>
#include<QDialog>
#include<QFontDialog>
#include<QColorDialog>
#include<QFileDialog>
#include<QMessageBox>

1、模拟对话框(不带阻塞)

代码如下

   //非模态对话框:不带阻塞
    QDialog *dlg=new QDialog(this);
    //警告:弹出对话框太小,应该重置对话框大小
    dlg->resize(200,300);
    dlg->show();
    qDebug()<<"显示模块对话框"<<endl;

2、模拟弹出错误提示对话框

代码如下

    //弹出一个错误框(窗口,标题,内容)
    QMessageBox::critical(this,"错误","很严重的错误提示");  

3、模拟对话框(带阻塞)

代码如下
区别是exec()和show()的区别;

  //模态对话框:带阻塞
    QDialog *dlg=new QDialog(this);
    //警告:弹出对话框太小,应该重置对话框大小
    dlg->resize(200,300);
    dlg->exec();
    qDebug()<<"显示模块对话框"<<endl;   

4、弹出询问对话框

代码如下
(1)这是询问对话框,选择“是”或者“否”。

 QMessageBox::question(this,"询问","是否重启? ");

(2)这是询问对话框,将选择改为Save和Cancel。

QMessageBox::question(this,"询问","是否重启? ",QMessageBox::Save|QMessageBox::Cancel);

(3)这是询问对话框,将选择改为Save和Cancel之后,默认是取消。

QMessageBox::question(this,"询问","是否重启? ",QMessageBox::Save|QMessageBox::Cancel,QMessageBox::Cancel);

(4)这是询问对话框,获取选择的选项,根据选的不同进行不同的行为。
这里可以是int ret,也可以是QMessageBox::StandardButton ret;

    int ret;
    ret=QMessageBox::question(this,"询问","是否重启? ",QMessageBox::Save|QMessageBox::Cancel,QMessageBox::Cancel);
    if(ret==QMessageBox::Cancel){
        qDebug()<<"显示对话框取消"<<endl;
    }
    else if(ret==QMessageBox::Save){
        qDebug()<<"显示对话框保存"<<endl;
    }

5、字体对话框

代码如下

  //字体对话框
    bool yes;
    QFont font;
    font=QFontDialog::getFont(&yes,QFont("黑体"),this);
    if(yes==true){
        qDebug()<<"字体是"<<font.family()<<",字体大小:"<<font.pointSize()<<endl;
    }

6、颜色对话框

代码如下

  //颜色对话框QColorDialog
    QColor color;
    color=QColorDialog::getColor();
    //输出三色值
    qDebug()<<"r="<<color.red()<<",g="<<color.green()<<",b="<<color.blue()<<endl;

7、文件对话框

代码如下

  //文件对话框QFileDialog
    QString filename;
    //获取选择的路径。
    filename=QFileDialog::getOpenFileName(this,"文件","d:\\","(*.png)");
    qDebug()<<filename<<endl;

窗口切换

1、逻辑说明

在这里插入图片描述

2、切换界面创建

在新建项目的时候要选择Qwidget类。然后其他开始在这里插入图片描述

窗口布局控件使用

1、listwidget

和tablewidget的区别是,listwidget只是一列出现,而tablewidget有很多列。
(暂定,这个使用频率少,且不稳定,会出现奇怪的bug,不建议使用。)

2、tablewidget

(1)创建窗口
方式1:ui窗口中拖拽进行创建

ui->tablewidget//这个tablewidget是tablewidget控件的名字。也可以是ui->tableWidget_2。

方式2:自己窗口中创建

//暂没有使用过。

(2)设置列数和行数
//行数和列数在添加内容之前是必须要进行设置的。

//设置表格列数为4.
ui->tableWidget_2->setColumnCount(4);
//设置表格行数为5
ui->tableWidget_2->setRowCount(5);

(3)设置列表的长度和宽度。指定的。

ui->tableWidget_2->setColumnWidth(1,60);//第一列,宽60.

(4)隐藏表头和表列

     ui->tableWidget_2->verticalHeader()->setVisible(false);//垂直的
     ui->tableWidget_2->horizontalHeader()->setVisible(false);//水平的

(5)设置窗口中的单元格不能修改,这里是单元格table04

table04->setFlags(table04->flags() & (~Qt::ItemIsEditable));

(6)设置窗口中的某个单元格的内容显示。
//这里设置进去的值,一定要是QString字符串类型的。比如:nihao
将nihao,放在名字叫做table04的单元格中。
然后把这个table04单元格放在当前窗口(ui),名字叫做tableWidget_2的tablewidget控件的第2行的,第4列(对应的是1,3)。

QTableWidgetItem *table04=new QTableWidgetItem("nihao");
 ui->tableWidget_2->setItem(1,3,table04);

(7)设置只能选中某一行,不能单个单个的选。

ui->tableWidget->setSelectionBehavior(QTableWidget::SelectRows);

(8)设置获取选中某一列的内容。

QList<QTableWidgetItem *> items=ui->tableWidget->selectedItems();
//选中的列的第一个和第二个是。用at进行获取。
int delete_id=items.at(0)->text().toInt();
QString name=items.at(2)->text();

部分解答

1、当运行的时候,中文出现乱码怎么解决?

指定中文编码

#pragma execution_character_set("utf-8")

2、QT界面能运行,且ui界面设计图标能显示,但是运行的时候图标显示不出来?

解决办法:重现建构
在这里插入图片描述

3、QT界面能运行,但QMovie的gif动图显示不了,重新构建解决不了问题?

解决办法:注意中文
原因是:gif动图以及按钮的名字都是中文,代码没有指定中文所以识别不了,动图没有显示,但是运行成功了。
解决办法,指定中文编码:
在代码上面加上:

#pragma execution_character_set("utf-8")

4、QT界面,不同窗口之间怎么传递数据?

使用set自定义函数来进行。同时接受数据的窗口的头文件应该要有私有变量去传递这个数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值