Qt学习笔记-DAY2

Qt学习笔记-DAY2

1.QMainWindow五个窗口部件

创建时选择QMainWindow

QMainWindow是一个为用户提供主窗口程序的类,包含一个菜单栏(menu bar)多个工具栏(tool bars)多个锚接部件(dock widgets)一个状态栏(statusbar)一个中心部件(central widget)

在这里插入图片描述

只能有一个的部件为**set** xxx 可以有多个的部件为 **add** XXX

#include "mainwindow.h"
#include <QMenuBar>
#include <QToolBar>
#include <QDebug>
#include <QPushButton>
#include <QStatusBar>
#include <QLabel>
#include <QDockWidget>
#include <QTextEdit>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    resize(600,400);  //重置窗口大小
    
/****************   菜单栏  只能有一个  *****************/
    //菜单栏创建
    QMenuBar * bar = menuBar();  //有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);


/****************   状态栏 只能有一个   *****************/
    QStatusBar * stBar = statusBar();
    //设置到窗口中
    setStatusBar(stBar);
    //放标签控件
    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);


}

当然也可以选择用拖拽的方法设计UI
在这里插入图片描述

2.资源文件添加

2.1.创建 Qt recourse File

在这里插入图片描述

2.2.打开 Qt recourse File

点击open in editor
在这里插入图片描述

2.3.添加 图片到Qt recourse File

先 添加前缀 再 添加文件
在这里插入图片描述

2.4.使用资源

ui->控件名->setIcon(QIcon(": 前缀名 文件名 "))

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    //使用添加Qt资源 ": + 前缀名 + 文件名 "
    ui->actionNew->setIcon(QIcon(":/Image/Luffy.png"));
    ui->actionOpen->setIcon(QIcon(":/Image/LuffyQ.png"));
}

3.对话框

3.1.自定义对话框

3.1.1.模态对话框【阻塞】
      QDialog dlg(this);
      dlg.resize(200,100);
      dlg.exec();  //显示
3.1.2.非模态对话框【非阻塞】___ 防止一闪而过—创建到堆区
      QDialog * dlg2 = new QDialog (this);
      dlg2->resize(200,100);
      dlg2->show(); //显示
      dlg2->setAttribute(Qt::WA_DeleteOnClose); //55号 属性  关闭时就清除内存

按下菜单按钮————弹出对话框 ↓

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

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    
    //点击新建按钮 弹出一个对话框
    connect(ui->actionNew,&QAction::triggered,[=](){
    
   /******************************************/
   /*                                        */
   /*         在此处实现对话框               */
   /*                                        */
   /******************************************/

    })

}

3.2.标准对话框

在这里插入图片描述

3.2.1.消息对话框

静态成员函数访问方法
在这里插入图片描述
在这里插入图片描述

静态成员函数QMessageBox::critical——information——question——warning()
参数1父亲 this
参数2窗口名
参数3显示的内容
参数4按键类型【只question】
参数5默认关联回车按键【只question】
返回值StandardButton类型
①.错误❌消息对话框
QMessageBox::critical(this,"错误窗口名","错误内容");
②.信息💬消息对话框
QMessageBox::information(this,"信息窗口名","信息内容");
③.提问❓消息对话框
QMessageBox::question(this,"提问窗口名","提问内容",QMessageBox::Save|QMessageBox::Cancel,QMessageBox::Cancel)

StandardButton返回类型
在这里插入图片描述

④.警告⚠消息对话框
QMessageBox::warning(this,"警告窗口名","警告内容");
3.2.2.其他标准对话框
①.颜色对话框
静态成员函数QColorDialog::getColor()
返回值RGB
QColor color =  QColorDialog::getColor(QColor(255,0,0));

在这里插入图片描述

②.文件对话框
静态成员函数QFileDialog::getOpenFileName()
参数1父亲 this
参数2窗口名
参数3默认路径
参数4过滤文件格式
返回值选取的路径
 QString str = QFileDialog::getOpenFileName(this,"打开文件","C:\\Users\\zhangtao\\Desktop","(*.txt)");

在这里插入图片描述

③.字体对话框
静态成员函数QFontDialog::getFont()
返回值FONT
        bool flag;
        QFont font = QFontDialog::getFont(&flag,QFont("华文彩云",36));
        qDebug() << "字体:" << font.family().toUtf8().data() << " 字号 "<< font.pointSize() << " 是否加粗"<< font.bold() << " 是否倾斜"<<font.italic();
 

在这里插入图片描述

4.UI布局

选取 widget 进行布局 ,水平布局、垂直布局、栅格布局——利用弹簧进行布局
在这里插入图片描述
可调间隙:layoutLeftMargin
在这里插入图片描述

5.常用控件

5.1.按钮Buttons

在这里插入图片描述

按钮用途
QPushButton 常用按钮显示文字
在这里插入图片描述
QToolButton 工具按钮用于显示图片&文字
在这里插入图片描述
RadioButton 单选按钮单选
在这里插入图片描述
Checkbox 多选按钮多选
在这里插入图片描述
①.QPushButton 常用按钮
②.QToolButton 工具按钮

修改风格:toolButtonStyle , 凸起风格autoRaise

在这里插入图片描述

③.RadioButton 单选按钮
    //设置单选按钮默认值
    ui->rBtnMan->setChecked(true);

    //选中事件信号 与 lambda表达式 连接
    connect(ui->rBtnWoman,&QRadioButton::clicked,[=](){
        qDebug() << "选中了女了!";
    });
④.Checkbox 多选按钮

2是选中 0是未选中 1是半选
lambda表达式输入参数为int state

    //多选按钮  2是选中  0是未选中 1是半选
    connect(ui->cBox,&QCheckBox::stateChanged,[=](int state){
        qDebug() << state;
    });

5.2.ItemWidget 控件【存放文本信息】

Item Views需要数据库 Item Widgets不需要数据库
在这里插入图片描述

①.QListWidget 列表容器

添加一行

   //创建一个item
   QListWidgetItem * item = new QListWidgetItem("锄禾日当午");
   //item放到listWidget控件中
   ui->listWidget->addItem(item);
   //设置居中
   item->setTextAlignment(Qt::AlignHCenter);

利用QStringList 类型、<<左移符号 、listWidget->addItems()函数 批量添加

   //QStringList   QList<QString>
   QStringList list ;
   list << "锄禾日当午" << "旱地和下土" << "谁知盘中餐"<< "粒粒皆辛苦";
   ui->listWidget->addItems(list);
②.QTreeWidget 树容器

在这里插入图片描述

    //设置水平头
    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;
    heroL1 << "刚被猪" << "前排坦克,能在吸收伤害的同时造成可观的范围输出";
    QTreeWidgetItem * l1 = new QTreeWidgetItem(heroL1);
    liItem->addChild(l1);
    .......
    .......
    .......
③.QTableWidget 表格容器

在这里插入图片描述

//设置列数
    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(i)));
        //int 转 QString
        ui->tableWidget->setItem(i,col++, new QTableWidgetItem( QString::number(i+18)));
    }

5.3.其他控件

①.容器

在这里插入图片描述

控件样式用途
Scroll Area在这里插入图片描述滑块
Tool Box在这里插入图片描述把工具归类存放
Tab Wiget在这里插入图片描述像网页一样
Stacked Widget在这里插入图片描述每次只显示一页控件代码如下:

栈控件使用

    //设置默认定位 scrollArea
    ui->stackedWidget->setCurrentIndex(1);

    //设置三个按钮和三个页面相关联
    connect(ui->btn_scrollArea,&QPushButton::clicked,[=](){
        ui->stackedWidget->setCurrentIndex(1);
    });     //scrollArea按钮
    
    connect(ui->btn_ToolBox,&QPushButton::clicked,[=](){
        ui->stackedWidget->setCurrentIndex(2);
    });    //toolBox按钮

    connect(ui->btn_TabWidget,&QPushButton::clicked,[=](){
        ui->stackedWidget->setCurrentIndex(0);
    });    //TabWidget按钮
②.Input Widgets 输入控件

在这里插入图片描述

    //下拉框
    ui->comboBox->addItem("奔驰");
    ui->comboBox->addItem("宝马");
    ui->comboBox->addItem("拖拉机");

    //点击按钮 选中拖拉机选项
    connect(ui->btn_select,&QPushButton::clicked,[=](){
        //ui->comboBox->setCurrentIndex(2);
        ui->comboBox->setCurrentText("拖拉机");
    });

③.Display Widgets 显示控件

在这里插入图片描述
利用QLabel显示图片、gif动态图片

    //利用QLabel显示图片
    ui->lbl_Image->setPixmap(QPixmap(":/Image/butterfly.png"));

    //利用QLabel显示 gif动态图片
    QMovie * movie = new QMovie(":/Image/mario.gif");
    ui->lbl_movie->setMovie(movie);
    //播放动图
    movie->start();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值