基础窗口控件QWidget类是所有用户界面对象的基类,所有的窗口或者控件都直接或者间接的继承自QWidget类。
原文链接:https://blog.csdn.net/humanking7/article/details/80697667
本章主要内容如下: 1) 窗口组件(QWidget) 2) QT坐标系统 3) 初探消息处理(信号与槽) ---- 窗口组件(QWidget) 介绍 Qt以组件对象的方式构建图形用户界面 Qt中没有父
http://www.blogjava.net/glorywine/archive/2008/06/21/206729.html
本来这一篇是想写一下怎么使用Qt Designer去设计一个界面的,但是我现在通常都是用代码去直接写界面很少用设计器。因为Qt Designer并不是为了python而写的,所以用起来不是很方便。很多初学者可能都比较喜欢使用Qt Designer,因为所见即所得,我以前做MFC开发的时候也是一直用界面设计器,主要是VS的功能非常强大,而且界面设计和代码编写都是使用这个IDE,契合非常完美。但是Qt Designer就一样了。另外一点就是因为你对PyQt5的布局管理器的使用不熟悉,如果你学会了布局管理器的使用,那这些控件的布局其实非常简单。他并不是你所想象的用代码去按像素调整窗口,PyQt5的布局管理器是根据左右布局、上下布局或者栅格布局自动帮你调整到对应的位置,你只需要进行一些微调就可以了。我们在网上搜到的很多代码都是直接去设置控件的绝对位置,这样就误导了很多人。PyQt5的布局管理器是非常好用的,它可以帮我们把大概的布局很简单的就设计好。所以后期我的教程会尽量使用布局管理器。同时在使用的地方也会加上一些注释,这样大家代码看得多了以后就会对布局管理器有一些了解。所以这一篇呢,我们就从控件开始吧,后期如果有时间的话,我再把Qt Designer简单使用写一篇文章。
打开 Pycharm->Settings->Tools->External Tools,点解+号添加新的工具:
QLayout是Qt应用开发中一个非常重要的组件,然而平时使用的时候不小心经常会发现控制台有类似如下的警告: QLayout: Attempting to add QLayout "" to studio::FootageListDock "footagelistDock", which already has a layout 网上关于这方面的解释一直比较混乱,而且是抄来抄去的,主要是集中在QMainWindow的问题。但是实际上,如果不注意的话,任意的QWidget上使用QLayout都会出现这个警告。
可以看到QPushButton和QHBoxLayout控件在new完后不需要执行delete操作。究竟是为何呢?我们再看看打印输出:
QWidget 是 Qt 框架中的一个基类,用于创建用户界面的可视化组件。它是所有用户界面组件的基础,包括窗口、对话框、按钮、文本框等。QWidget 提供了一组通用的功能和属性,以及与用户交互的事件处理机制。
http://blog.csdn.net/xgbing/article/details/7764326
下列代码中rootWidget作为所有窗口的父窗口时,当窗口关闭将会导致内存泄漏。
在发送参数的界面中定义一个信号,然后在接收参数的界面中定义一个相应的槽函数。当需要传递参数时,发送界面通过emit关键字发送信号,并将参数作为信号的参数传递。接收界面通过连接(connect)函数将信号与槽函数绑定,在槽函数中可以获取到传递的参数。
对话框介绍 对话框是于用户进行简易交互的顶层窗口 QDialog是Qt中所有对话框窗口的父类,是一种容器类型的组件 QDialog继承于QWidget类,如下图所示: QWidget和QDialog有
一 窗口部件 基础窗口部件QWidget类是所有用户界面对象的基类,窗口和控件都是直接或间接继承自 QWidget,下面我们来看一个很简单的例子: 窗口部件(Widget)简称部件,是QT中建立界面的
Qt中实现自定义信号与槽函数,信号用于发送并触发槽函数,槽函数则是具体的功能实现,如下我们以老师学生为例子简单学习一下信号与槽函数的使用方法。
事件是应用程序内部或者外部产生的事情或者动作的统称。在 Qt 中使用⼀个对象来表⽰⼀个事件。所有的 Qt 事件均继承于抽象类 QEvent。事件是由系统或者 Qt 平台本⾝在不同的时刻发出的。当用户按下⿏标、敲下键盘,或者是窗⼝需要重新绘制的时候,都会发出⼀个相应的事件。⼀些事件是在用户操作时发出,如键盘事件、⿏标事件等,另⼀些事件则是由系统本⾝⾃动发出,如定时器事件。常见的 Qt 事件如下:
在这个部分,我们开始学习一些PyQt4的基本功能,解释会比较详细,就像教孩子说话一样。 最简单的example 下面的示例会非常的简单,仅仅显示一个小窗口,但是将来我们可以通过这个小窗口做很多事情。我们可以对它进行缩放,最大化,最小化。而这些就需要比较多的代码了。但是开发人员已经帮我们完成了这些功能,因为这些功能在大多场合都会使用到,所以没有必要让我们重复。PyQt是一个高级别的工具库,如果使用级别相对较低的库开发下面的功能,就非常可能需要更多的代码了。
在功能实现中,获取IP地址有两种方法,一是通过代码自动获取IP地址,二是手动设置IP,默认是手动设置,设置完成后,点击绑定端口,即可开始监听客户端的信息。
QObject定时器 需要头文件#include <QTimerEvent> 需要函数 int QObject::startTimer(int interval); //启动定时器,并设置定时器间隔时间(单位ms),启动后返回该定时器ID号. void QObject::timerEvent(QTimerEvent * event); //定时器处理函数,需要用户来重写它,如果有多个定时器,可以通过QTimerEvent::timerId()来判断定时器ID处理 void killTimer(int
QTabWidget主要是用来分页显示的,每一页一个界面,众多界面公用一块区域,节省了界面大小,很方便的为用户显示更多的信息
通过上图可得:Qt中通过connect函数来进行连接,从而触发一个事件 代码演示前,我们需要之前信号这个东西在帮助文档里面怎么找到,首先我们这里是创建一个按钮控件。实现点击按钮,关闭窗口,那么就应该去父类QPushButton类中找signal信号函数:
QTabWidget 用来分页显示 重要函数: 1.void setTabText(int, QString); //设置页面的名字. 2.void setTabToolTip(QString); //设置页面的提示信息. 3.void setTabEnabled(bool); //设置页面是否被激活. 4.void setTabPosition(QTabPosition::South); //设置页面名字的位置. 5.void setTabsClosable(bool); //设置页面关闭按钮。 6.int currentIndex(); //返回当前页面的下标,从0开始. 7.int count(); //返回页面的数量. 8.void clear(); //清空所有页面. 9.void removeTab(int); //删除页面. 10.void setMoveable(bool); //设置页面是否可被拖拽移动. 11.void setCurrentIndex(int); //设置当前显示的页面.
程序 #include "widget.h" //对于 Qt 程序来说,GUI 程序是QApplication //非 GUI 程序是QCoreApplication。QApplication派生自QCoreApplication #include <QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); //创建一个应用程序对象,该对象有且仅有一个。 Widget w;
Qt 的事件机制是一种基于事件驱动的机制,用于处理用户输入、系统事件和自定义事件。
Widget 是 Qt 中的核⼼概念. 英⽂原义是 “⼩部件”, 我们此处也把它翻译为 “控件” 。控件是构成⼀个图形化界⾯的基本要素.
QMainWindow类提供一个有菜单条、锚接窗口(例如工具条)和一个状态条的主应用程序窗口。
给QWidget或者QDialog设置布局的时候方式很简单。创建好一个布局:mainLayout,然后不停地把各个控件往mainLayout里面放,最后调用setLayout(mainLayout)就行了。 QMainWindow中使用这个方法的时候却不管用,因为QMainWindow是默认有layout的,所以再次设置layout会失效。 会出现这种提示: QWidget::setLayout: Attempting to set QLayout "" on
PySide——Python图形化界面入门教程(一) ——基本部件和HelloWorld 翻译自:http://pythoncentral.io/intro-to-pysidepyqt-basic-widgets-and-hello-world/ 本教程第一部分将给出PySide的最基本知识点,包含使用的对象,和一些能帮助你了解Python/Qt应用是如何构建的小例子。 首先来看一下基本的Qt对象。Qt包含了许多类去处理XML、多媒体、数据库和网络等等事物,但我们现在重点关注可视化的元素——窗口、对话框和
QGroupBox为构建分组框提供了支持。分组框通常带有一个边框和一个标题栏,作为容器部件来使用,在其中可以布置各种窗口部件。分组框的标题通常在上方显示,其位置可以设置为靠左、居中、靠右、自动调整这几种方式之一。位于分组框之中的窗口部件可以获得应用程序的焦点,位于分组框之内的窗口部件是分组框的子窗口,通常使用addWidget()方法把子窗口部件加入到分组框之中。
下列代码例子中实现的将窗体名字为Example的窗体嵌入到QWidget中。 #include <QApplication> #include <QWindow> #include <QWidget> #include <windows.h> int main(int argc, char *argv[]) { QApplication a(argc, argv); WId winId = (WId)FindWindow(NULL, L"Example"); QWindow *
布局管理器简介 QT中提供了对界面组件进行布局管理的类,用于对界面组件进行管理, 能够自动排列窗口中的界面组件 窗口大小变化后,便会自动更新界面组件的大小。 布局管理器可以自定义,从而达到更加个性化界
上面的代码实例会在屏幕上显示一个小的窗口。 在这里,我们进行了一些必要的模块导入,最基础的widget组件位于PyQt5.QtWidget模块中
learn from 《PyQt5 快速开发与实战》 https://doc.qt.io/qtforpython/index.html https://www.riverbankcomputing.com/static/Docs/PyQt5
PyQt5的界面布局主要有两种方法:绝对定位和局部类。在PyQt5中有四种布局方式:水平布局、垂直布局、网格布局、表单布局。还有两种布局方法:addLayout和addWidget,其中addLayout用于在布局中插入子布局,addWidget用于在布局中插入控件。
QTabWidget默认tab页标题(tabBar)在上面,但是有时候我们需要改变它的位置,比如做一个设置页面,想将它放到左边显示,这个比较简单,只需要设置一个属性即可实现:tabPosition:west,但是我们发现它文字的方向是没有改变的,这样完全没有使用体验,所以我们需要改变文字的方向。
创建项目名称:TestMouseEvent 在widget.cpp中添加代码 #include "widget.h" #include "ui_widget.h" #include <QEvent> #include<QMouseEvent> #include <QDebug> #include <QPainter> Widget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget) { ui->setupU
Python Qt5是一个强大的GUI工具包,可以用来设计各种桌面应用程序,包括图形用户界面、数据库应用程序等。本教程将带你入门Python Qt5,从安装开始到图形界面的设计以及常见的控件和事件。
对话框为应用程序与用户通信提供了一种有效的方法,但是复杂的对话框会遇到这样的问题,即它们通常占用过多的屏幕区域。通过在对话框中使用多个标签,可以将信息分为不同的类别,同时仍可访问。
在一个Widget中,Qt布局管理系统提供了一个简单而有效的方式来自动组织子widget,以保证他们能够很好地利用可用空间。
摘要:这篇文章是Python GUI教程系列的第三篇,将介绍Qt编程中的布局概念及其在Python环境下的实现
import sys from PyQt5.QtWidgets import QApplication ,QWidget , QHBoxLayout, QVBoxLayout, QGridLayout , QFormLayout, QPushButton
原文链接:https://blog.csdn.net/humanking7/article/details/88079086
TableDelegate 自定义代理组件的主要作用是对原有表格进行调整,例如默认情况下Table中的缺省代理就是一个编辑框,我们只能够在编辑框内输入数据,而有时我们想选择数据而不是输入,此时就需要重写编辑框实现选择的效果,代理组件常用于个性化定制Table表格中的字段类型。
原文链接:https://blog.csdn.net/humanking7/article/details/86091087
三、实现效果图如下(程序中对应的控件对象名在下面可以直接对照,控件不多,就不一一列出来了):
这里每个页面也可以再嵌入菜单;这个只是实现了一个简单的菜单框架,这个菜单可以再改进添加上菜单键的翻页,菜单键太多,就两边加上箭头,用于把隐藏的按键显示出来;还可以把按键改为竖着排放的。
自从Qt5发布以来,我一直在推迟对我一直在做的一个项目升级到Qt5。即使是像这样的版本,从Qt 4.7到Qt 5(没错,跳过了4.8),出于某种原因也不像暗示的那么简单。他们说: “只需改变包含和链接路径, 就会自行编译。” Psht,是正确的。别再上当了。
领取专属 10元无门槛券
手把手带您无忧上云