QT5开发及实例第1章
QT5开发及实例第1章

1.3.1 设计器Qt 5 Designer实现
(6)单击“完成”按钮完成创建,相应的文件自动加载到文件列表中,如图 1.11所示。
1.3.1 设计器Qt 5 Designer实现
单击中间灰色一列工具栏中的过滤符号( )后,弹出一个下拉列表,使 两个项目都是被勾选后处于选中状态(默认选项“简化树形视图”没选中,“隐 藏生成的文件”处于选中状态),如图1.12(a)所示。
1.3.1 设计器Qt 5 Designer实现
调整各控件的位置,单击编辑框的空白处使编辑框处于被选中状态,拖曳右下 角的小方框,调整整个框架的大小,直至调整到适当大小为止,调整后的布局如图 1.16所示。
1.3.1 设计器Qt 5 Designer实现
下面将修改拖曳到编辑框中的各控件的属性,如图1.17所示,各控件属性见 表1.1。
1.3.1 设计器Qt 5 Designer实现
下面单击左下角的运行按钮( )或者使用组合键【Ctrl+R】运行程序,这 时系统提示是否保存,单击“保存所有”按钮,如图1.21所示。
1.3.1 设计器Qt 5 Designer实现
2.编写相应的计算圆面积代码 首先简单认识一下Qt编程环境。找到文件列表中自动添加的main.cpp文件,如 图1.12所示。每个工程都有一个执行的入口函数,此文件中的main()函数就是此工 程的入口。下面详细介绍一下main()函数的相关内容: #include "dialog.h" #include <QApplication> int main(int argc, char *argv[]) {
1.2.3 Qt 5开发环境
进入Qt设计器主界面后,看到的中间部分(如图1.4所示)就是将要设计的顶 层窗口部件(顶层窗口部件是其他子窗口部件的载体)。
pyqt5 python 案例

pyqt5 python 案例1. PyQt5入门案例:创建一个简单的窗口在PyQt5中,可以使用QWidget类创建一个简单的窗口。
以下是一个简单的示例代码,可以创建一个空白的窗口。
```pythonimport sysfrom PyQt5.QtWidgets import QApplication, QWidgetif __name__ == '__main__':app = QApplication(sys.argv)window = QWidget()window.setWindowTitle('简单窗口')window.setGeometry(100, 100, 300, 200)window.show()sys.exit(app.exec_())```2. PyQt5案例:添加按钮和标签在PyQt5中,可以使用QPushButton和QLabel类来创建按钮和标签。
以下是一个示例代码,创建一个窗口,其中包含一个按钮和一个标签。
```pythonimport sysfrom PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QLabeldef button_clicked():label.setText('按钮被点击了!')if __name__ == '__main__':app = QApplication(sys.argv)window = QWidget()window.setWindowTitle('按钮和标签')window.setGeometry(100, 100, 300, 200)button = QPushButton('点击我', window)button.setGeometry(100, 50, 100, 30)button.clicked.connect(button_clicked)label = QLabel('标签', window)label.setGeometry(100, 100, 100, 30)window.show()sys.exit(app.exec_())```3. PyQt5案例:创建一个简单的登录窗口在PyQt5中,可以使用QLineEdit、QPushButton和QMessageBox类来创建一个简单的登录窗口。
【书籍】《Qt5开发及实例》笔记

【书籍】《Qt5开发及实例》笔记第⼀章概述1.3.1 设计器实现1.3.2代码实现L1.2概念解析伙伴编辑模式信号与槽机制元对象系统布局管理器第⼆章2.1字符串字符串相加替换格式处理去除空⽩符号等查询字符串数据字符串转换2.2容器类list map hash 不同容器操作速度不⼀样不同的容器,读写速度不⼀样QList<int> list;list<<1<<2<<3<<4<<5;QListIterator<int> i(list);for(;i.hasNext();)qDebug()<<i.next();Qmap2.3 Qvariant【可存储多种类型】2.4算法和正则表达式【】2.5 控件项⽬视图【】定时器【】项⽬控件【】隐式共享和引⽤计数第三章布局管理3.1分割窗⼝#include "mainwindow.h"#include <QApplication>#include<Qsplitter>#include<QTextEdit>#include <QTextCodec>int main(int argc, char *argv[]){QApplication a(argc, argv);QFont font("ZYSong18030",12);a.setFont(font);//主分割窗⼝QSplitter *splitterMain =new QSplitter(Qt::Horizontal,0);QTextEdit *textLeft =new QTextEdit(QObject::tr("Left Widget"),splitterMain);textLeft->setAlignment(Qt::AlignCenter);//右部分割窗⼝QSplitter *splitterRight =new QSplitter(Qt::Vertical,splitterMain);splitterRight->setOpaqueResize(false);QTextEdit *textUp =new QTextEdit(QObject::tr("Top Widget"),splitterRight);textUp->setAlignment(Qt::AlignCenter);QTextEdit *textBottom =new QTextEdit(QObject::tr("Bottom Widget"),splitterRight); textBottom->setAlignment(Qt::AlignCenter);splitterMain->setStretchFactor(1,1);splitterMain->setWindowTitle(QObject::tr("Splitter"));splitterMain->show();//MainWindow w;//w.show();return a.exec();}3.2停靠窗⼝【】#include"dockwindows.h"#include<QTextEdit>#include<QDockWidget>DockWindows::DockWindows(QWidget*parent):QMainWindow(parent){setWindowTitle(tr("DockWindows"));//设置主窗⼝的标题栏⽂字QTextEdit*te=new QTextEdit(this);//定义⼀个QTextEdit对象作为主窗⼝te->setText(tr("Main Window"));te->setAlignment(Qt::AlignCenter);setCentralWidget(te);//将此编辑框设为主窗⼝的中央窗体//停靠窗⼝1QDockWidget*dock=new QDockWidget(tr("DockWindow1"),this);dock->setFeatures(QDockWidget::DockWidgetMovable);//可移动dock->setAllowedAreas(Qt::LeftDockWidgetArea|Qt::RightDockWidgetArea); QTextEdit*te1 =new QTextEdit();te1->setText(tr("Window1,The dock widget can be moved between docks by the user""")); dock->setWidget(te1);addDockWidget(Qt::RightDockWidgetArea,dock);//停靠窗⼝2dock=new QDockWidget(tr("DockWindow2"),this);dock->setFeatures(QDockWidget::DockWidgetClosable|QDockWidget::DockWidgetFloatable);//可关闭、可浮动QTextEdit*te2 =new QTextEdit();te2->setText(tr("Window2,The dock widget can be detached from the main window,""and floated as an independent window,and can be closed"));dock->setWidget(te2);addDockWidget(Qt::RightDockWidgetArea,dock);//停靠窗⼝3dock=new QDockWidget(tr("DockWindow3"),this);dock->setFeatures(QDockWidget::AllDockWidgetFeatures);//全部特性QTextEdit*te3 =new QTextEdit();te3->setText(tr("Window3,The dock widget can be closed,moved,and floated"));dock->setWidget(te3);addDockWidget(Qt::RightDockWidgetArea,dock);}DockWindows::~DockWindows(){}3.3堆栈窗⼝#include"stackdlg.h"#include<QHBoxLayout>StackDlg::StackDlg(QWidget*parent):QDialog(parent){setWindowTitle(tr("StackedWidget"));list=new QListWidget(this);list->insertItem(0,tr("Window1"));list->insertItem(1,tr("Window2"));list->insertItem(2,tr("Window3"));label1=new QLabel(tr("WindowTest1"));label2=new QLabel(tr("WindowTest2"));label3=new QLabel(tr("WindowTest3"));stack=new QStackedWidget(this);stack->addWidget(label1);stack->addWidget(label2);stack->addWidget(label3);QHBoxLayout*mainLayout =new QHBoxLayout(this);mainLayout->setMargin(5);mainLayout->setSpacing(5);mainLayout->addWidget(list);mainLayout->addWidget(stack,0,Qt::AlignHCenter);mainLayout->setStretchFactor(list,1);mainLayout->setStretchFactor(stack,3);connect(list,SIGNAL(currentRowChanged(int)),stack,SLOT(setCurrentIndex(int))); }StackDlg::~StackDlg(){}3.4基本布局~#include"dialog.h"#include<QLabel>#include<QLineEdit>#include<QComboBox>#include<QPushButton>#include<QFrame>#include<QGridLayout>#include<QPixmap>#include<QHBoxLayout>Dialog::Dialog(QWidget*parent):QDialog(parent){setWindowTitle(tr("UserInfo"));/**************左侧******************************/UserNameLabel=new QLabel(tr("⽤户名:")); UserNameLineEdit=new QLineEdit;NameLabel=new QLabel(tr("姓名:"));NameLineEdit=new QLineEdit;SexLabel=new QLabel(tr("性别:"));SexComboBox=new QComboBox;SexComboBox->addItem(tr("⼥"));SexComboBox->addItem(tr("男"));DepartmentLabel=new QLabel(tr("部门:")); DepartmentTextEdit=new QTextEdit;AgeLabel=new QLabel(tr("年龄:"));AgeLineEdit=new Q LineEdit;OtherLabel=new QLabel(tr("备注:"));OtherLabel->setFrameStyle(QFrame::Panel|QFrame::Sunken);LeftLayout=new QGridLayout();LeftLayout->addWidget(UserNameLabel,0,0);//⽤户名LeftLayout->addWidget(UserNameLineEdit,0,1);LeftLayout->addWidget(NameLabel,1,0);//姓名LeftLayout->addWidget(NameLineEdit,1,1);LeftLayout->addWidget(SexLabel,2,0);//性别LeftLayout->addWidget(SexComboBox,2,1);LeftLayout->addWidget(DepartmentLabel,3,0);//部门LeftLayout->addWidget(DepartmentTextEdit,3,1);LeftLayout->addWidget(AgeLabel,4,0);//年龄LeftLayout->addWidget(AgeLineEdit,4,1);LeftLayout->addWidget(OtherLabel,5,0,1,2);//其他LeftLayout->setColumnStretch(0,1);LeftLayout->setColumnStretch(1,3);/*********右侧*********/HeadLabel=new QLabel(tr("头像:"));//右上⾓部分HeadIconLabel=new QLabel;QPixmap icon("312.png");HeadIconLabel->setPixmap(icon);HeadIconLabel->resize(icon.width(),icon.height()); UpdateHeadBtn=new QPushButton(tr("更新"));TopRightLayout=new QHBoxLayout();TopRightLayout->setSpacing(20);TopRightLayout->addWidget(HeadLabel); TopRightLayout->addWidget(HeadIconLabel); TopRightLayout->addWidget(UpdateHeadBtn); IntroductionLabel=new QLabel(tr("个⼈说明:"));//右下⾓部分IntroductionTextEdit=new QTextEdit;RightLayout=new QVBoxLayout();RightLayout->setMargin(10);RightLayout->addLayout(TopRightLayout);RightLayout->addWidget(IntroductionLabel);RightLayout->addWidget(IntroductionTextEdit);/*---------------------底部--------------------*/OkBtn=new QPushButton(tr("确定"));CancelBtn=new QPushButton(tr("取消"));ButtomLayout=new QHBoxLayout();ButtomLayout->addStretch();ButtomLayout->addWidget(OkBtn);ButtomLayout->addWidget(CancelBtn);/*---------------------------------------------*/QGridLayout*mainLayout =new QGridLayout(this); mainLayout->setMargin(15);mainLayout->setSpacing(10);mainLayout->addLayout(LeftLayout,0,0);mainLayout->addLayout(RightLayout,0,1);mainLayout->addLayout(ButtomLayout,1,0,1,2); mainLayout->setSizeConstraint(QLayout::SetFixedSize);}Dialog::~Dialog(){}第四章基本对话框--【各种基本对话框】4.7 ⼯具盒类4.8 进度条4.9调⾊板和电⼦钟4.10可扩展对话框4.11不规则对话框4.12程序启动画⾯ qsplashscreen第五章主窗体5.1.3菜单和⼯具栏的实现打印⽂本图⽚⽂本编辑⽂本颜⾊字体字号下划线粗体倾斜段落对齐⽂本排序列表序号第六章图形与图⽚窗体位置基本图形的绘制void PaintArea::paintEvent(QPaintEvent *){QPainter p(this);p.setPen(pen);p.setBrush(brush);QRect rect(50,100,300,200);static const QPoint points[4]={QPoint(150,100),QPoint(300,150),QPoint(350,250),QPoint(100,300)};int startAngle =30*16;int spanAngle =120*16;QPainterPath path;path.addRect(150,150,100,100);path.moveTo(100,100);path.cubicTo(300,100,200,200,300,300);path.cubicTo(100,300,200,200,100,100);path.setFillRule(fillRule);switch(shape){case Line: //直线p.drawLine(rect.topLeft(),rect.bottomRight()); break; case Rectangle: //长⽅形p.drawRect(rect); break;case RoundRect: //圆⾓⽅形p.drawRoundRect(rect); break;case Ellipse: //椭圆形p.drawEllipse(rect); break;case Polygon: //多边形p.drawPolygon(points,4); break;case Polyline: //多边线p.drawPolyline(points,4); break;case Points: //点p.drawPoints(points,4); break;case Arc: //弧p.drawArc(rect,startAngle,spanAngle); break;case Path: //路径p.drawPath(path); break;case Text: //⽂字p.drawText(rect,Qt::AlignCenter,tr("Hello Qt!")); break; case Pixmap: //图⽚p.drawPixmap(150,150,QPixmap("butterfly.png")); break; default: break;}}双缓冲机制void DrawWidget::mousePressEvent(QMouseEvent*e){startPos=e->pos();}void DrawWidget::mouseMoveEvent(QMouseEvent*e){QPainter*painte r=new QPainter;QPen pen;pen.setStyle((Qt::PenStyle)style);pen.setWidth(weight);pen.setColor(color);painter->begin(pix);painter->setPen(pen);painter->drawLine(startPos,e->pos());painter->end();startPos=e->po s();update();}void DrawWidget::paintEvent(QPaintEvent*){QPainter painter(this);painter.drawPixmap(QPoint(0,0),*pix);}void DrawWidget::resizeEvent(QResizeEvent*event) {if(height()>pix->height()||width()>pix->width()){QPixmap*newPix =new QPixmap(size());newPix->fill(Qt::white);QPainter p(newPix);p.drawPixmap(QPoint(0,0),*pix);pix=newPix;}QWidget::resizeEvent(event);}void DrawWidget::clear(){QPixmap*clearPix =new QPixmap(size()); clearPix->fill(Qt::white);pix=clearPix;update();}第七章图形视图框架第⼋章模型视图结构第九章⽂件和磁盘处理第⼗章⽹络和通信第⼗⼀章事件处理按键事件事件过滤第⼗⼆章多线程多线程控制互斥量信号量线程等待第⼗三章数据库第⼗四章国际化tr 函数翻译第⼗五章单元测试框架第⼗六章综合实例:汽车销售管理第⼗七章综合实例:聊天软件使⽤toolbox罗列⽤户,使⽤toolbutton显⽰⽤户头像和名称第⼋章第⼋章。
PyQt5案例汇总(简洁版)

PyQt5案例汇总(简洁版)01菜单栏import sysfrom PyQt5.QtWidgets import QMainWindow, QAction, qApp, QApplicationfrom PyQt5.QtGui import QIconclass Example(QMainWindow):def __init__(self):super().__init__()self.initUI()def initUI(self):exitAct = QAction(QIcon('exit.png'), '&Exit', self)exitAct.setShortcut('Ctrl+Q')exitAct.setStatusTip('Exit application')exitAct.triggered.connect(qApp.quit)self.statusBar()menubar = self.menuBar()fileMenu = menubar.addMenu('&File')fileMenu.addAction(exitAct)self.setGeometry(300, 300, 300, 200)self.setWindowTitle('Simple menu')self.show()app = QApplication(sys.argv)ex = Example()sys.exit(app.exec_())02菜单栏++import sysfrom PyQt5.QtWidgets import QMainWindowfrom PyQt5.QtWidgets import QActionfrom PyQt5.QtWidgets import qAppfrom PyQt5.QtWidgets import QApplicationfrom PyQt5.QtGui import QIconclass Demo(QMainWindow):def __init__(self):# 重新执⾏⽗类的初始化⽅法(默认的⼀些操作)super().__init__()# 加⼊⾃定义⽅法self.initUI()def initUI(self):# 设置菜单的图标exitAct = QAction(QIcon('exit.png'),'&Exit', self)exitAct.setShortcut('Ctrl+Q')exitAct.setStatusTip('Exit application')exitAct.triggered.connect(qApp.quit)self.statusBar()menubar = self.menuBar()file_menu = menubar.addMenu('&File')file_menu.addAction(exitAct)self.setGeometry(300,300,300,300)self.setWindowTitle('简单的菜单')self.show()app = QApplication(sys.argv)ex = Demo()app.exec()03简单的窗⼝(细致分析)#!/usr/bin/env python# -*- coding:utf-8 -*-# Created by xiaoming# 本模块的功能:<># 这个简单的⼩例⼦展⽰的是⼀个⼩窗⼝。
pyqt5-python-Gui入门教程

pyqt5&python Gui入门教程(1)第一个窗口(1)第一个窗口和代码详细注释:from PyQt5 import QtWidgets#从PyQt库导入QtWidget通用窗口类class mywindow(QtWidgets.QWidget):#自己建一个mywindows类,以class开头,mywindows是自己的类名,#(QtWidgets.QWidget)是继承QtWidgets.QWidget类方法,# 定义类或函数不要忘记':'符号,判断语句也必须以':'结尾!def __init__(self):#def是定义函数(类方法)了,同样第二个__init__是函数名# (self)是pyqt类方法必须要有的,代表自己,相当于java,c++中的this #其实__init__是析构函数,也就是类被创建后就会预先加载的项目super(mywindow,self).__init__()#这里我们要重载一下mywindows同时也包含了QtWidgets.QWidget的预加载项import sysapp = QtWidgets.QApplication(sys.argv)#pyqt窗口必须在QApplication方法中使用,#要不然会报错 QWidget: Must construct a QApplication before a QWidget windows = mywindow()# 生成过一个实例(对象), windows是实例(对象)的名字,可以随便起!# mywindows()是我们上面自定义的类windows.show()#有了实例,就得让他显示这里的show()是QWidget的方法,用来显示窗口的!sys.exit(app.exec_())#启动事件循环pyqt5&python Gui入门教程(2)第一个窗口(2)上图是第一篇教程,下面的显示效果都一样,我们来看看有什么不同1、类的名字、实例的名字都换了,2、多了一个if __name__ == "__main__": 以及下面的代码缩进了,层次改变了1、我们把结尾的5句代码,单独建立了一个函数2、然后直接调用函数3、注意两个def的缩进,第一个def缩进了代表是在class里面,第二个和class平齐,则是在外面。
Qt5教程

传智播客– C++学院Qt5教程目录目录 (1)1Qt概述 (3)1.1 什么是Qt (3)1.2 Qt的发展史 (4)1.3 支持的平台 (4)1.4 Qt版本 (4)1.5 Qt的安装 (5)Linux Host (5)OS X Host (5)Windows Host (5)1.6 Qt的优点 (5)2创建Qt项目 (6)2.1 使用向导创建 (6)2.2手动创建 (9)2.3.pro文件 (10)2.4一个最简单的Qt应用程序 (12)3信号和槽机制 (13)3.1 信号和槽 (13)3.2 自定义信号槽 (15)自定义信号槽需要注意的事项 (18)信号槽的更多用法 (18)3.3 Lambda表达式 (19)4 Qt窗口系统 (21)4.1 Qt窗口坐标体系 (21)坐标体系 (21)4.2 QWidget (21)4.3 QMainWindow (23)4.3.1 菜单栏 (24)4.3.2 工具栏 (25)4.3.3 状态栏 (25)4.4 资源文件 (26)4.5 对话框QDialog (29)4.5.1 基本概念 (29)4.5.2 标准对话框 (30)4.5.3 自定义消息框 (31)4.5.4 消息对话框 (33)4.5.5 标准文件对话框 (36)4.6 常用控件 (39)4.6.1 QLabel控件使用 (39)4.6.2 QLineEdit (41)4.6.3 其他控件 (43)4.7 布局管理器 (43)4.7.1 水平/垂直/网格布局 (44)4.7.2 自定义控件 (46)5 Qt消息机制和事件 (50)5.1 事件 (50)5.2 event() (53)5.3 事件过滤器 (56)5.4 总结 (60)5.5 不规则窗体 (63)6 绘图和绘图设备 (64)6.1 QPainter (64)6.2 绘图设备 (66)6.2.1 QPixmap、QBitmap、QImage (66)6.2.2 QPicture (70)7 文件系统 (71)7.1 基本文件操作 (72)7.3 文本文件读写 (77)8 Socket通信 (80)8.1 TCP/IP (81)服务器端 (81)客户端 (83)8.2 UDP (85)广播 (86)组播 (86)8.3 TCP/IP 和UDP的区别 (87)9 多线程 (87)9.1 线程介绍 (88)9.2 多线程的使用 (91)9.3 使用线程绘图 (93)10 数据库操作 (95)10.1 数据库操作 (95)10.2 使用模型操作数据库 (101)查询操作 (101)插入操作 (102)更新操作 (103)删除操作 (104)10.3 可视化显示数据库数据 (104)11 Qt程序打包 (106)1Qt概述1.1 什么是QtQt是一个跨平台的C++图形用户界面应用程序框架。
PyQt5快速开发与实战

9.5 PyQtGraph在PyQt中的应用
9.5.1 PyQtGraph的安装 9.5.2官方示例解读 9.5.3设置提升的窗口控件 9.5.4 PyQtGraph的使用 9.5.5更多扩展
9.6 Plotly在PyQt中的应用
9.6.1 Plotly的安装 9.6.2示例解读 9.6.3设置提升的窗口控件 9.6.4 Plotly_PyQt5的使用 9.6.5更多扩展 9.6.6 Plotly与PyQt 5.6的结合 9.6.7更多扩展
5.3多线程
5.3.1 QTimer 5.3.2 QThread 5.3.3事件处理
5.4网页交互
案例5-10加载并显示外部的Web页面 案例5-11加载并显示本地的Web页面 案例5-12加载并显示嵌入的HTML代码 案例5-13 PyQt调用JavaScript代码 案例5-14 JavaScript调用PyQt代码
9.7 UI层的自动化测试
9.7.1手工测试与自动化测试 9.7.2模拟鸡尾酒的调酒器窗口 9.7.2将界面文件转换为Python文件 9.7.3单元测试程序 9.7.4运行测试用例 9.7.5生成测试报告
10.2复利计算
10.1获取城市天气 预报
10.3刷新博客点击 量
10.1获取城市天气预报
4.7 QSpinBox(计 数器)
1
4.8 QSlider (滑动条)
2
4.9对话框类 控件
3
4.10窗口绘图 类控件
4
4.11拖曳与剪 贴板
5
4.12日历与时 间
4.13菜单栏、 工具栏与状态
栏
4.14 QPrinter
4.1 QMainWindow
4.1.1窗口类型介绍 4.1.2创建主窗口 4.1.3将主窗口放在屏幕中间 4.1.4关闭主窗口
Qt 5开发及实例 第1章 Qt概述

(9)不再支持MSVC 2013、QNX 6.6和macOS 10.10。
更新Qt Webengine的Chromium版 本。支持嵌入式DevTools,包含可 安装的Cookie过滤器和配额权限。
支持基于硬件的图形层和VSP2硬件合成 平台的技术预览版,有助于提高视频性 能并降低功耗。完善Qt Serialbus和 Bluetooth对CAN总线和BTLE的支持。 KNX模块增加对OPC/UA的支持。
2.Qt 5.11版的改进
对Qt Core进行完善,更好地 支持Unicode。在Qt Network 中,iOS可支持ALPN和HTTP/2。
Qt QML编译器管道负责解 析和编译QML,性能提高、 更可维护。将QML编译为 与平台无关的字节码。
Qt GUI基于Microsoft UI Automation, 并且更好地支持高DPI显示。改进 Linux上的打印对话框,为CUPS的 选项提供了更好的支持。
1.界面设计
(7)双击dialog.ui,进入界面设计器Qt Designer编辑状态,开始进行设计器(Qt Designer)编程。 拖曳控件容器栏的滑动条,在最后的Display Widgets容器栏(图1.22)中找到Label标签控件,拖 曳三个此控件到中间的编辑框中;同样,在Input Widgets容器栏(图1.21)中找到Line Edit文本控件, 拖曳此控件到中间的编辑框中,用于输入半径值;在Buttons容器栏(图1.24)中找到Push Button按 钮控件,拖曳此控件到中间的编辑框中,用于提交响应单击事件。
2.编写相应的计算圆面积代码
安装Qt 5.11
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.3.1 设计器Qt 5 Designer实现
在Input Widgets容器栏(如图1.14所示)中找到LineEdit文本控件,拖曳此 控件到中间的编辑框中,用于输入半径值;
1.3.1 设计器Qt 5 Designer实现
在Buttons容器栏(如图1.15所示)中找到PushButton按钮控件,拖曳此控件 到中间的编辑框中,用于提交响应单击事件。
1.1 什么是Qt
Qt支持的平台有: MS/Windows—95、98、NT 4.0、ME、2000、XP和Vista; UNIX/X11—Linux、Sun Solaris、HP-UX、Compaq Tru64 UNIX、IBM AIX、 SGI IRIX和其他很多X11平台;
Macintosh—Mac OS X;
Embedded—有帧缓冲(framebuffer)支持的Linux平台、Windows CE; Symbian/S60—目前已经可以提供技术预览版本。
1.2 Qt 5的安装
1.2.1 下载Qt 5 Crea.1所示。
1.3.2 代码实现
(3)在dialog.cpp 中添加如下代码: Dialog::Dialog(QWidget *parent) : QDialog(parent) { label1=new QLabel(this); label1->setText(tr("请输入圆的半径:")); lineEdit=new QLineEdit(this); label2=new QLabel(this); button=new QPushButton(this); button->setText(tr("显示对应圆的面积")); QGridLayout *mainLayout=new QGridLayout(this); mainLayout->addWidget(label1,0,0); mainLayout->addWidget(lineEdit,0,1); mainLayout->addWidget(label2,1,0); mainLayout->addWidget(button,1,1); }
1.2.2 运行Qt 5 Creator
点击运行Qt Creator,出现欢迎界面,如图1.2所示。
1.2.3 Qt 5开发环境
GUI用户界面设计(Qt Designer)界面如图1.3所示。
1.2.3 Qt 5开发环境
进入Qt设计器主界面后,看到的中间部分(如图1.4所示)就是将要设计的顶 层窗口部件(顶层窗口部件是其他子窗口部件的载体)。
1.3.1 设计器Qt 5 Designer实现
(2)进入dialog.cpp文件中按钮单击事件的槽函数on_countBtn_clicked()。信 号与槽连接的具体说明参照本书后面提供的知识点链接部分。在此函数中添加如下 代码: void Dialog:: on_countBtn_clicked() { bool ok; QString tempStr; QString valueStr=ui->radiusLineEdit->text(); int valueInt=valueStr.toInt(&ok); double area=valueInt*valueInt*PI;//计算圆面积 ui->areaLabel_2->setText(tempStr.setNum(area)); } (3)在此文件开始处添加以下语句: const static double PI=3.1416;
1.3.1 设计器Qt 5 Designer实现
方式2:在LineEdit内输入半径值,不需要单击按钮触发单击事件,直接就在 areaLabel_2中显示圆面积。编写代码步骤如下。 (1)在“LineEdit”编辑框上单击鼠标右键,在弹出的下拉菜单中选择“转 到槽...”菜单项,在弹出的对话框中选择“textChanged(QString)”信号,如图 1.24所示。
1.3.1 设计器Qt 5 Designer实现
(6)单击“完成”按钮完成创建,相应的文件自动加载到文件列表中,如图 1.11所示。
1.3.1 设计器Qt 5 Designer实现
单击中间灰色一列工具栏中的过滤符号( )后,弹出一个下拉列表,使 两个项目都是被勾选后处于选中状态(默认选项“简化树形视图”没选中,“隐 藏生成的文件”处于选中状态),如图1.12(a)所示。 若单击其中“简化树形视图”项取消选中状态,此时文件列表中的文件自动 分类显示,如图1.12(b)所示。
1.3.1 设计器Qt 5 Designer实现
下面单击左下角的运行按钮( )或者使用组合键【Ctrl+R】运行程序,这 时系统提示是否保存,单击“保存所有”按钮,如图1.21所示。
1.3.1 设计器Qt 5 Designer实现
2.编写相应的计算圆面积代码 首先简单认识一下Qt编程环境。找到文件列表中自动添加的main.cpp文件,如 图1.12所示。每个工程都有一个执行的入口函数,此文件中的main()函数就是此工 程的入口。下面详细介绍一下main()函数的相关内容: #include "dialog.h" #include <QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); Dialog w; w.show(); return a.exec(); }
1.3.1 设计器Qt 5 Designer实现
(4)弹出“选择构建套件”界面,系统默认已指定C++的编译器和调试器, 如图1.9所示,直接单击“下一步”按钮进入下一步骤即可。
1.3.1 设计器Qt 5 Designer实现
(5)根据实际需要,选择一个“基类”。这里选择QDialog对话框类作为基 类,这时“类名”、“头文件”、“源文件”及“界面文件”都出现默认的文件 名。默认选中“创建界面”复选框,表示需要采用自带的界面设计器来设计界面, 否则需要利用代码完成界面的设计,如图1.10所示。
1.3.1 设计器Qt 5 Designer实现
方式1:在LineEdit文本框内输入半径值,然后单击“计算”按钮,则在 areaLabel_2中显示对应的圆面积。编写代码步骤如下。 (1)在“计算”按钮上单击鼠标右键,在弹出的下拉菜单中选择“转到 槽...”命令,如图1.22所示。在弹出的对话框中选择“clicked()”信号,如图 1.23所示。
1.3.1 设计器Qt 5 Designer实现
(7)双击dialog.ui,进入界面设计器Qt Designer编辑状态,开始进行设计器 (Qt Designer)编程。 拖曳控件容器栏的滑动条,在最后的Display Widgets容器栏(如图1.13所示) 中找到Label标签控件,拖曳三个此控件到中间的编辑框中。
1.3.1 设计器Qt 5 Designer实现
(2)单击“确定”按钮,进入dialog.cpp文件中的文本编辑框,改变值内容事 件的槽函数on_radiusLineEdit_textChanged(const QString &arg1)。在此函数中添 加如下代码: void Dialog::on_radiusLineEdit_textChanged(const QString &arg1) { bool ok; QString tempStr; QString valueStr=ui->radiusLineEdit->text(); int valueInt=valueStr.toInt(&ok); double area=valueInt*valueInt*PI;//计算圆面积 ui->areaLabel_2->setText(tempStr.setNum(area)); }
1.3 Qt 5开发步骤及实例
本实例要实现的功能是,当用户输入一个圆的半径后,可以显示计算后的圆 的面积值。运行效果如图1.5所示。
1.3.1 设计器Qt 5 Designer实现
1.界面设计 步骤如下。 (1)单击运行Qt Creator,进入欢迎界面如图1.2所示。单击“文件”→“新 建文件或项目...”命令,创建一个新的工程,如图1.6所示。
第1章 Qt概述
1.1 什么是Qt
1.2 Qt 5的安装 1.3 Qt 5开发步骤及实例
1.1 什么是Qt
Qt是一个跨平台的C++图形用户界面应用程序框架。它为应用程序开发者提 供建立艺术级图形用户界面所需的所有功能。
Qt是诺基亚公司的一个产品。1996年,Qt进入商业领域,已成为全世界范围
内数千种成功的应用程序的基础。它也是目前流行的Linux桌面环境KDE 的基础, KDE是Linux发行版的主要一个标准组件。
1.3.2 代码实现
(1)首先创建一个新工程。创建过程和本书1.3.1节中的第(1)步骤~第(6) 步骤相同,只是在第(3)步骤中,项目命名为Dialog且保存路径为
D:\Qt\CH1\CH102,在第(5)步骤中,取消“创建界面”复选框的选中状态。
1.3.2 代码实现
(2)在上述工程的dialog.h中添加如下加黑代码: class Dialog : public QDialog { Q_OBJECT public: Dialog(QWidget *parent = 0); ~Dialog(); private: QLabel *label1,*label2; QLineEdit *lineEdit; QPushButton *button; }; 此时要在文件最开始加入头文件: #include <QLabel> #include <QLineEdit> #include <QPushButton>