【五天时间】Qt从入门到实战:第二天

第一天

https://blog.csdn.net/qq_40507857/article/details/125730739

第二天

2.1 带菜单栏的窗口

QMainWindow是一个提供主窗口程序的类,包含一个菜单栏(Menu bar)、多个工具栏(tool bars)、多个锚接部件(dock widgets)、一个中心部件(central widget)。
在这里插入图片描述

  • 菜单栏只有一个
	//菜单栏创建
    QMenuBar *bar=new QMenuBar();

    //将菜单栏放入窗口中
    setMenuBar(bar);

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

    //创建菜单项
    QAction *newAction1 = fileMenu->addAction("新建1");
    QAction *newAction2 = fileMenu->addAction("新建2");
    //添加分割线
    fileMenu->addSeparator();
    QAction *newAction3 = fileMenu->addAction("新建3");
  • 工具栏可以有多个
	//工具栏 可以有多个
    QToolBar *toolBar=new QToolBar(this);
    addToolBar(Qt::LeftToolBarArea,toolBar);

    //后期设置 只允许左右停靠
    toolBar->setAllowedAreas(Qt::LeftToolBarArea|Qt::RightToolBarArea);

    //设置浮动
    toolBar->setFloatable(false);

    //设置移动(总开关)
    toolBar->setMovable(false);

    //工具栏中设置内容
    toolBar->addAction(newAction1);
    toolBar->addSeparator();
    toolBar->addAction(newAction2);
    toolBar->addAction(newAction3);

    QPushButton *btn=new QPushButton(this);
    btn->setText("aaa");
    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);

  • 中心部件只能有一个
//设置中心部件 只能有一个
    QTextEdit *edit=new QTextEdit(this);
    setCentralWidget(edit);

2.2 资源文件

  • 将图片文件夹拷贝到项目位置下
  • 右键项目-》添加新文件-》Qt-》Qt resource file-》给资源文件夹起个名字
  • 生成:资源文件夹名字.qrc
  • 右键资源文件夹名字.qrc,open in editor进行编辑
  • 先添加前缀,再添加文件
  • 使用:“:+前缀名+文件名”
//使用添加Qt资源 ": + 前缀名 + 文件名"
    ui->actionnew->setIcon(QIcon(":/Image/img1.jpg"));
    ui->actionopen->setIcon(QIcon(":/Image/img2.jpg"));

在这里插入图片描述

2.3 对话框

模态对话框 (不可以对其他窗口进行操作)

connect(ui->actionNew,&QAction::triggered,[=](){
        //对话框 分类
        //模态对话框 (不可以对其他窗口进行操作)
        //非模态对话框(可以对其他窗口进行操作)
        //模态创建 阻塞
        QDialog dlg(this);
        dlg.resize(200,100);
        dlg.exec();
        qDebug()<<"模态对话框弹出了";
    }); 

非模态对话框(可以对其他窗口进行操作)

connect(ui->actionNew,&QAction::triggered,[=](){
        QDialog *dlg2=new QDialog(this);
        dlg2->resize(200,100);
        dlg2->setAttribute(Qt::WA_DeleteOnClose);
        dlg2->show();
        qDebug()<<"非模态对话框弹出了";
    });

标准对话框

  • QMessageBox 静态成员函数 创建对话框
  • 错误、信息、提问、警告
  • 参数1:父亲,参数2:标题,参数3:显示内容,参数4:按键类型,参数5:默认关联的回车按键
  • 返回值也是StandardButton类型,利用返回值判断用户输入
	//消息对话框
    connect(ui->actionNew,&QAction::triggered,[=](){
        //错误对话框
        QMessageBox::critical(this,"critical","错误");

        //信息对话框
        QMessageBox::information(this,"information","信息");

        //提问对话框
        //参数1:父亲,参数2:标题,参数3:提示内容,参数4:按键类型,参数5:默认关联回车按键
        if(QMessageBox::Save==QMessageBox::question(this,"question","问题",QMessageBox::Save|QMessageBox::Cancel,QMessageBox::Cancel)){
            qDebug()<<"Save";
        }else{
            qDebug()<<"Cancel";
        }
        //警告对话框
        QMessageBox::warning(this,"warning","警告");

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

其他对话框

        //颜色对话框
        QColor color=QColorDialog::getColor(QColor(255,0,0));
        qDebug()<<"r="<<color.red()<<"g="<<color.green()<<"b="<<color.blue();

在这里插入图片描述

        //选择文件对话框
        QString qstr=QFileDialog::getOpenFileName(this,"打开文件","C:\\Users\\hulin\\Desktop","(*.pdf)");
        qDebug()<<qstr;

在这里插入图片描述

        //选择字体对话框
        bool flag;
        QFont font =QFontDialog::getFont(&flag,QFont("微软雅黑",36));
        qDebug()<<"字体:"<<font.family()<<"字号:"<<font.pointSize()<<"加粗:"<<font.bold()<<"倾斜:"<<font.italic();

在这里插入图片描述

2.4 界面布局

  • 实现登录窗口
  • 利用布局方式给窗口进行美化
  • 选取Widget进行布局,水平布局、垂直布局、栅格布局
  • 给账户、密码、登录、取消按钮进行布局
  • 默认窗口和控件之间有9个像素的间隙
  • 利用弹簧进行布局
    在这里插入图片描述

在这里插入图片描述

2.5 常用控件

按钮组

  • QPushButton 常用按钮
  • QToolButton 工具按钮 用于显示图片,如果想显示文字,修改风格:toolButtonStyle,凸起风格 autoRaise
  • radioButton 单选按钮,设置默认
  • checkbox 多选按钮,监听状态,2 选中,1 半选,0 未选中
    在这里插入图片描述

ListWidget列表容器

  • QListWidgetItem * Item 一行内容
  • ui->listWidget->addItem(Item)
  • 设置居中方式 item->setTextAlignment(Qt::AlignHCenter)
  • 可以利用addItems一次性添加整个内容
//利用listwidget写诗
    QListWidgetItem *item=new QListWidgetItem("锄禾日当午");
    //将一行诗放到listWidget控件中
    ui->listWidget->addItem(item);
//QStringList QList<QString>
    QStringList list;
    list<<"锄禾日当午"<<"汗滴禾下土"<<"谁知盘中餐"<<"粒粒皆辛苦";
    ui->listWidget->addItems(list);

在这里插入图片描述

QTreeWidget 树控件

  • 设置头
  • 创建根节点
  • 添加根节点到树控件上
  • 添加子节点
//设置头
    ui->treeWidget->setHeaderLabels(QStringList()<<"标题"<<"内容");

    //创建根节点
    QTreeWidgetItem *item_1=new QTreeWidgetItem(QStringList()<<"标题1");
    QTreeWidgetItem *item_2=new QTreeWidgetItem(QStringList()<<"标题2");
    QTreeWidgetItem *item_3=new QTreeWidgetItem(QStringList()<<"标题3");

    //添加根节点到树控件上
    ui->treeWidget->addTopLevelItem(item_1);
    ui->treeWidget->addTopLevelItem(item_2);
    ui->treeWidget->addTopLevelItem(item_3);

    //添加子节点
    QTreeWidgetItem *item_1_1=new QTreeWidgetItem(QStringList()<<"标题1.1"<<"内容1.1");
    item_1->addChild(item_1_1);

    QTreeWidgetItem *item_1_2=new QTreeWidgetItem(QStringList()<<"标题1.2"<<"内容1.2");
    item_1->addChild(item_1_2);

    QTreeWidgetItem *item_2_1=new QTreeWidgetItem(QStringList()<<"标题2.1"<<"内容2.1");
    item_2->addChild(item_2_1);

    QTreeWidgetItem *item_2_2=new QTreeWidgetItem(QStringList()<<"标题2.2"<<"内容2.2");
    item_2->addChild(item_2_2);

    QTreeWidgetItem *item_3_1=new QTreeWidgetItem(QStringList()<<"标题3.1"<<"内容3.1");
    item_3->addChild(item_3_1);

    QTreeWidgetItem *item_3_2=new QTreeWidgetItem(QStringList()<<"标题3.2"<<"内容3.2");
    item_3->addChild(item_3_2);

在这里插入图片描述

QTableWidget表格控件

//表格控件
    //设置列数
    ui->tableWidget->setColumnCount(3);

    //设置表头
    ui->tableWidget->setHorizontalHeaderLabels(QStringList()<<"姓名"<<"性别"<<"年龄");

    //设置行数
    ui->tableWidget->setRowCount(3);

    //设置正文
    QStringList nameList;
    nameList<<"亚瑟"<<"赵云"<<"花木兰";
    QList<QString> sexList;
    sexList<<"男"<<"男"<<"女";

    for(int i=0;i<3;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)));
    }

在这里插入图片描述

2.6 自定义控件

  • 栈控件的使用
//栈控件的使用
    //设置默认定位
    ui->stackedWidget->setCurrentIndex(1);
    connect(ui->pushButton_ScrollArea,&QPushButton::clicked,[=](){
        ui->stackedWidget->setCurrentIndex(0);
    });
    connect(ui->PushButton_ToolBox,&QPushButton::clicked,[=](){
        ui->stackedWidget->setCurrentIndex(1);
    });
    connect(ui->PushButton_TabWidget,&QPushButton::clicked,[=](){
        ui->stackedWidget->setCurrentIndex(2);
    });

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 下拉框
//下拉框
    ui->comboBox->addItem("奔驰");
    ui->comboBox->addItem("宝马");
    ui->comboBox->addItem("奥迪");

在这里插入图片描述

  • 显示图片
  • 显示动图
    ui->label_img->setPixmap(QPixmap(":/Image/img1.jpg"));
    QMovie *movie=new QMovie("/Image/img7.gif");
    ui->label_gif->setMovie(movie);
    movie->start();

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值