华清远见25072班QT学习day2
重点内容:
QMainWindow中常用类的使用
菜单栏 QMenuBar
1、创建菜单栏 QMenuBar 最多只能有一个
QMenuBar *mbar = menuBar();
2、将菜单栏放入窗口中
this->setMenuBar(mbar);
3、往菜单栏里增加菜单
QMenu *file = mbar->addMenu("XXX");
4、往菜单里增加菜单项
file->addAction("XXX");
5、增加分隔符
file->addSeparator();
工具栏 QToolBar
1、创建工具栏 QToolBar 可以有多个
QToolBar *tbar = new QToolBar(this);
2、将工具栏放入窗口中 设置默认停靠的范围
this->addToolBar(Qt::LeftToolBarArea,tbar);
3、只允许左右停靠
tbar->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea);
4、设置不允许浮动
tbar->setFloatable(false);
5、往工具栏里增加工具项
tbar->addAction("XXX");
6、实例化一个按钮
QPushButton *btn = new QPushButton("XXX",this);
7、将按钮放入工具栏中
tbar->addWidget(btn);
状态栏 QStatusBar
1、创建状态栏 QStatusBar 最多只能有一个
QStatusBar *sbar = statusBar();
2、将状态栏放入窗口中
this->setStatusBar(sbar);
4、将标签放入状态栏中默认从左边显示
sbar->addWidget(lab);
5、将标签放入状态栏中默认在右边显示
sbar->addPermanentWidget(lab);
铆接部件(浮动窗口) QDockWidget
1、创建浮动窗口 QDockWidget 可以有多个
QDockWidget *dock = new QDockWidget("浮动窗口",this);
2、将浮动窗口放入窗口中 以及设置停靠的范围
this->addDockWidget(Qt::BottomDockWidgetArea,dock);
3、只允许左右停靠
dock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
ui界面文件
1、ui界面文件在Forms文件夹下 (XXX.ui)
2、ui界面可以通过ui指针访问ui界面上的所有组件。
资源文件的添加
目的:确保项目的兼容性,能够使得自己的代码在其他电脑上能正常运行起来,或者发布软件时,也能正常运行。
信号和槽
1、信号和槽是qt的核心机制之一,可以实现多个组件之间的联系(通信)。
2、信号:信号函数。定义在类体的signals权限下,信号函数是一个不完整的函数,只有声明,不要实现。
3、槽:槽函数。定义在类体的public slots权限下,槽函数是一个完整函数,既要声明,也要实现。槽函数可以当成普通函数。
4、任意一个组件都有系统提供的信号和槽。
信号和槽的连接方式
1、基于ui界面上的连接,在信号和槽区,将ui界面上系统提供的信号和槽进行连接。该连接方式:无需写信号函数、槽函数、连接函数。
2、基于ui界面上的连接,在组件上,右击转到槽,选中要发射的信号,在系统提供的槽函数框架中,书写逻辑代码。该连接方式:无需写信号函数、连接函数。
1、思维导图
2、将昨晚的登录界面 升级优化。如果点击登录按钮,则通过信号和槽的连接,实现判断用户输入的账户和密码是否正确(账号:admin,密码123456),如果正确,则在终端输出登录成功,且关闭当前界面。如果账号或密码错误,则在终端输出登录失败,且账号和密码输入框清空。
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//设置窗口的标题this->setWindowTitle("神奇宝贝联盟");//设置窗口的图标this->setWindowIcon(QIcon(":/picture/icon.jpg"));//设置背景颜色this->setStyleSheet("background-color:rgb(240, 248, 255)");//设置图片//用动图类 QMovie 实例化一个动图QMovie *mv = new QMovie(":/picture/baby.gif");//将动图放到标签中ui->loginLab->setMovie(mv);//让动图动起来mv->start();//图片自适应ui->loginLab->setScaledContents(true);//设置用户图片ui->userPictureLab->setPixmap(QPixmap(":/picture/xiaozhi.jpg"));//图片自适应ui->userPictureLab->setScaledContents(true);//设置占位符文本ui->userNameEdit->setPlaceholderText("请输入账号");ui->passwordEdit->setPlaceholderText("请输入密码");//设置回显模式ui->passwordEdit->setEchoMode(QLineEdit::Password);//将图片放到标签中ui->userNameLab->setPixmap(QPixmap(":/picture/icon.jpg"));//图片自适应ui->userNameLab->setScaledContents(true);//将图片放到标签中ui->passwordLab->setPixmap(QPixmap(":/picture/passwordicon.jpg!con"));//图片自适应ui->passwordLab->setScaledContents(true);
}
Widget::~Widget()
{delete ui;
}
void Widget::on_loginBtn_clicked()
{if(ui->userNameEdit->text()=="wcg"&&ui->passwordEdit->text()=="123456"){qDebug() << "登录成功" ;this->close();}else{qDebug() << "登录失败" ;ui->userNameEdit->clear();ui->passwordEdit->clear();}
}