企业网络推广做网站推广公司,京东网上商城官网,网站开发用什么电脑好,wordpress好123新建QT工程 1.方法 第一种#xff1a;点击new project按钮#xff0c;弹出对话框#xff0c;新建即可 第二种#xff1b;点击文件菜单#xff0c;选择新建文件或者工程 2.QT工程文件介绍 (1).pro文件 --》QT工程配置文件 QT …新建QT工程 1.方法 第一种点击new project按钮弹出对话框新建即可 第二种点击文件菜单选择新建文件或者工程 2.QT工程文件介绍 (1).pro文件 --》QT工程配置文件 QT core gui //添加我要使用的QT库 core(核心库) gui(图形用户交互库) greaterThan(QT_MAJOR_VERSION, 4): QT widgets //添加widgets窗口库 TARGET firstqt //生成的可执行程序的名字 TEMPLATE app //生成QT应用程序 SOURCES main.cpp\ mainwindow.cpp //QT工程编译需要用到的源码 HEADERS mainwindow.h //QT工程编译需要的头文件 FORMS mainwindow.ui //QT工程中的界面文件 (2)main.cpp --》QT工程主函数所在的源码 int main(int argc, char *argv[]) { QApplication a(argc, argv); //管理整个QT程序(管理QT的信号与槽管理QT的事件响应) MainWindow w; //创建了一个主窗口对象叫做w w.show(); //显示主窗口 return a.exec(); //进入事件循环不断地帮你刷新主窗口 } QT设计师界面QT designer的使用--》 所见即所得 1.跳转到QT设计师界面 双击.ui文件自动跳转到设计师界面 原理你用ui设计师去设计QT集成开发环境会自动帮你生成两种格式的代码 第一种格式XML格式保存到ui文件里面(不需要掌握) 第二种格式C代码构造函数ui-setupUi(this); //通过给组件对象(默认都是指针) 你拖过去的组件默认都是生成指针然后使用new分配了堆空间 你拖过去的组件对象(指针)在ui设计师右上角类对象视图中都可以清清楚楚地看到名字 ctrl按住不松开,鼠标左键点击函数名字即可跳到函数的源码中 使用组件(控件) 点击要使用的组件直接拖到窗口(点击组件按下ctrl不松拖动复制组件) 所有组件对应类名都符合如下规律 比如按钮我见到的名字 Push Button --》类名QPushButton 标签我见到的名字 Label --》类名QLabel 2.常用的组件 (1)display widgets组 第一个label 标签类名叫做QLabel 可以显示文字信息 常用的属性 geometry 设置位置坐标宽高 font 设置你喜欢的字体 某个同学想要了解老师没有讲过一定要主动搜索查资料 (2)input widget组 第一个line edit 单行输入框类名QLineEdit 获取键盘输入的信息 常用的属性 font --》设置你喜欢的字体 echoMode --》normal 显示文字信息 password 隐藏文字信息 maxlength --》设置文字的位数一个字母一个数字一个汉字都算一个位数 placeholdertext --》设置单行输入框默认提示信息 (3)buttons 组 第一个push button 普通按钮类名QPushButton 常用的属性 font --》设置你喜欢的字体 3.QT中的样式设计 (1)QT工程中添加资源文件 1.1 资源文件指的就是QT程序中需要用到的素材(比如图片音频视频) 1.2 添加步骤 第一步在QT工程中新建一个文件夹把需要的资源(图片)全部存放到该文件夹中 第二步右键点击工程名选择添加add new--》选择QT--》QT resource file(资源文件) 第三步点击添加--》添加前缀然后再次点击添加--》添加文件把之前你准备好的资源添加进来即可 1.3 新增资源文件以及删除现有的资源文件 新增资源文件右键点击资源文件最顶层的目录名选择添加现有文件即可 删除现有的资源文件右键点击资源文件名选择删除文件即可 (2)QT中的qss语句(样式设计语句) 2.1 样式设计指的是让你的界面设计得更加好看(比如文字颜色背景图片改变倒角) QT中的样式设计就跟计算机前端(css)中设计网页的样式道理一样 2.2 常见的qss语句 红 绿 蓝 background-color: rgb(85, 255, 255); //设置背景颜色(按钮标签的背景颜色) color: rgb(85, 255, 255); //设置前景色(文字的颜色) background-image: url(:/new/prefix1/pic/3.jpg); //设置背景图片(不会拉伸图片) background-image: url(你需要的图片的绝对路径); border-image: url(:/new/prefix1/pic/2.jpg); //设置边框图片(边框图片跟组件的大小保持一致) border-image: url(你需要的图片的绝对路径); border-radius:15px; //把倒角设置为15个像素 倒角的大小不能超过组件高度的一半 border:2px solid#ff0000; //把边框的宽度设置为2个像素颜色设置成ff0000 QPushButton:pressed{ 设置按钮按下的时候背景图片,主界面的样式中使用 background-image: url(:/button_down.png); } QPushButton:pressed#regBt{ 设置指定按钮regBt按钮按下时候背景图片主界面的样式中使用 background-image: url(:/button_down.png); } QPushButton:hover{ 主界面的样式中使用 background-color:#ff00ff; 鼠标进入控件设置背景颜色 } QMainWindow{border-image: url(:/new/prefix1/pic/3.jpg);} //让图片只作用于主窗口 注意注意注意QT中路径的写法跟window不一样 比如window路径 C:\Users\PC\Desktop\share QT中要求改写成 C:/Users/PC/Desktop/share QT工程存储的路径不可以使用中文路径但是QT的代码中可以使用中文路径 QT中的信号与槽函数 1.信号与槽函数的作用 用来在组件和组件,组件和窗口之间通信 Linux中进程间通信signal(你要捕捉的信号,函数指针) 当前进程收到指定信号函数指针对应的函数自动调用 同样的道理QT中信号触发之后对应的槽函数也会自动调用 类比linux: connect(信号发送者,信号,信号接收者,槽函数) 仅仅只是类比 区别linux中的信号是一个宏定义 QT中的信号是个函数 信号QT中给每个组件都定义了信号每个信号都有它特定的触发条件 QT中所有的信号本质上都是个函数但是有点特殊信号只有声明没有源代码 比如以按钮为例常用的信号如下 [signal] void QAbstractButton::clicked(bool checked false) //当按钮按下去然后松开的时候自动触发这个信号 [signal] void QAbstractButton::released() //按钮松开会触发该信号 [signal] void QAbstractButton::pressed() //按钮按下去触发该信号 槽函数当某个信号触发的时候跟这个信号对应的槽函数会被自动调用执行 2.如何关联信号与槽函数 第一种方法借助集成开发环境右键转到槽函数 头文件中会自动生成槽函数的声明 private slots: //声明了一个私有的槽函数 void on_pushButton_clicked(); //槽函数的原型声明 在源码.cpp文件中自动生成的槽函数命名有规律 on_对象的名字_信号的名字(); 第二种方法程序员调用connect函数手动关联信号与槽函数 写法一connect(QObject *sender, PointerToMemberFunction signal,QObject *receiver, PointerToMemberFunction method) 写法二connect(发送者指针类的名字::信号的名字,接收者类的名字::槽函数) 参数sender --》信号的发送者指针 signal --》发送什么信号 receiver --》信号的接收者 method --》需要调用的槽函数 槽函数命名时候可以跟自动生成的槽函数命名规律保持一致也可以自行单独命名 比如connect(ui-handlebt,SIGNAL(clicked(bool)),this,SLOT(fun())); //关联了handlebt这个按钮的clicked信号和槽函数fun() QT使用技巧头文件中声明了函数右键选择refactor可以在.cpp生成函数的定义 多界面跳转以及界面之间传递参数 主窗口设置在最小化任务栏显示的图标setWindowIcon() 1.多界面跳转总结为两种情况 情况一A界面跳到B界面不需要返回 //创建主界面对象 MainWindow *newwinnew MainWindow(); //堆空间 //把主界面显示出来 newwin-show(); //把登录界面关闭 this-close(); 情况二A界面跳到B界面需要返回 //创建主界面对象 MainWindow *newwinnew MainWindow(this); //此时必须传递this原因是返回的时候需要根据这个this找到上一级窗口的地址 qDebug()登录界面的首地址是: this; //把主界面显示出来 newwin-show(); //把登录界面隐藏--》把登录界面转入系统后台运行 this-hide(); 重要函数 QWidget *QWidget::parentWidget() const 返回值返回上一级窗口的指针 2.在QT工程中添加新的界面 右键点击工程名--》选择add new--》QT--》QT设计师界面类--》模板选择MainWindow 3.界面之间传递参数 A界面传递参数给B界面A是第一个界面B是第二个界面 方法1B界面的类中定义了一个公有的方法通过调用这个公有方法把参数传递过去 方法2通过自定义信号来传递参数(发送信号,信号带参数) 布局管理器 1.作用 让你的组件在水平和垂直方向对齐好看 2.常用的布局管理器 水平布局管理器 --》让组件在水平方向形成一个整体对齐 垂直布局管理器 --》让组件在垂直方向形成一个整体对齐 栅格布局管理器 --》可以把组件嵌套到主窗口中 点击主窗口选择栅格布局即可实现 3.布局管理器使用技巧 技巧一固定组件的长和宽 修改属性把最小尺寸和最大尺寸改成一样的值就固定了 修改属性把最小尺寸和最大尺寸改成某个范围组件就会在指定范围内变动 技巧二使用水平和垂直弹簧(分隔器) 水平和垂直方向伸缩 4.代码实现布局 水平布局管理器 --》QHBoxLayout 重要方法 (1)往布局管理器中添加组件 void QLayout::addWidget(QWidget *w) 参数w --》你要添加的组件 (2)往布局管理器中添加其他的布局管理器 void QBoxLayout::addLayout(QLayout *layout, int stretch 0) 参数layout --》你要添加的布局管理器 stretch --》布局管理器之间的间隔距离 垂直布局管理器 --》QVBoxLayout 重要方法 (1)构造函数 QVBoxLayout(QWidget *parent) (2)往布局管理器中添加其他的布局管理器 void QBoxLayout::addLayout(QLayout *layout, int stretch 0) 参数layout --》你要添加的布局管理器 stretch --》布局管理器之间的间隔距离 栅格(网格)布局管理器 --》QGridLayout 重要方法 (1)构造函数 QGridLayout(QWidget *parent) 参数parent --》中心窗口区域(如果该布局管理器是最顶层的情况下) (2)往布局管理器中添加其他的布局管理器 addWidget(QWidget *widget, int row, int column) 参数widget --》你要添加的组件 row --》行从0开始 column --》列从0开始 注意用代码实现布局最顶层的布局管理器必须作用于中心窗口不能作用于主窗口 消息盒子和对话框(重点) 1.消息盒子QMessageBox 常用方法 (1)弹出警告盒子 [static] StandardButton QMessageBox::warning(QWidget *parent, const QString title, const QString text, StandardButtons buttons Ok, StandardButton defaultButton NoButton) 返回值你点击了盒子里面的哪个按钮返回值就返回这个按钮 参数parent --》this父窗口 title --》消息盒子的标题 text --》盒子里面的文本内容 buttons --》盒子默认使用哪些按钮默认使用ok按钮 如果你想添加多个按钮多个按钮之间使用按位或连接起来 defaultButton --》当你按下回车键默认选中的按钮 (2)致命错误盒子 [static] StandardButton QMessageBox::critical(QWidget *parent, const QString title, const QString text, StandardButtons buttons Ok, StandardButton defaultButton NoButton) (3)帮助盒子 [static] StandardButton QMessageBox::question(QWidget *parent, const QString title, const QString text, StandardButtons buttons StandardButtons( Yes | No ), StandardButton defaultButton NoButton) 如何判断点击了哪个按钮 方法通过warning函数的返回值判断具体参见例子代码 if(retQMessageBox::Ok) { } else //其他按钮 { } 2.QT中自带的对话框 颜色对话框 QColorDialog (1)重要方法 [static] QColor QColorDialog::getColor(const QColor initial Qt::white, QWidget *parent Q_NULLPTR, const QString title QString()) 返回值你选中的颜色 参数initial --》颜色对话框默认选中的颜色 //依据RGB的值新建颜色对象 QColor(int r, int g, int b) parent --》父窗口 this title --》颜色对话框的标题 如何判断用户是否选中了某个颜色 bool QColor::isValid() const 返回值如果用户点击ok --》颜色就是合法返回true 反之返回false 字体对话框 QFontDialog (1)重要方法 [static] QFont QFontDialog::getFont(bool *ok, QWidget *parent Q_NULLPTR) 返回值你选中的字体 参数ok --》保存你是否选中了某个字体选中了 --》true 没有选中 --》false parent --》父窗口 this QString QFont::family() const 返回值返回你选中的字体名字 int QFont::pointSize() const 返回值返回你选中的字体大小 如何判断用户是否选中了某个字体 方法判断getFont的第一个参数是否为真 文件对话框 QFileDialog (1)重要方法 //弹出文件对话框让用户可以选择某个具体的文件 [static] QString QFileDialog::getOpenFileName(QWidget *parent Q_NULLPTR, const QString caption QString(), const QString dir QString(), const QString filter QString()) 返回值你选中的某个文件的绝对路径名 参数parent --》父窗口 this caption --》文件对话框的标题 dir --》你指定要打开的目录路径 filter --》文件过滤器过滤掉你不需要的文件 比如 *.txt 表示我只想查看文件夹中的记事本 *.txt *.bmp 表示我想查看文件夹中的记事本和bmp图片 //弹出目录对话框只能让用户选择目录不可以选择目录中具体文件 [static] QString QFileDialog::getExistingDirectory(QWidget *parent Q_NULLPTR, const QString caption QString(), const QString dir QString()) 返回值你选中的某个目录的绝对路径名 参数parent --》父窗口 this caption --》目录对话框的标题 dir --》你指定要打开的目录路径