2)坐标位置 //这里的热点就是鼠标点击时生效的位置 QCursor cursor(pixmap,2,2); //设置光标 this->setCursor(cursor) >setToolTip("这是按钮2"); ui->pushButton_2->setToolTipDuration(300); } Widget::~Widget() { delete widget的focusPolicy Qt::FocusPolicy是一个枚举类型,取值如下: Qt::Nofocus:控件不会接收键盘焦点 Qt::TabFocus:控件可以通过Tab键接收焦点。 Qt::ClickFocus:控件在鼠标点击时接收焦点。 Qt::StrongFocus:控件可以通过Tab键和鼠标点击接收焦点。 Qt::WheelFocus:类似于Qt::StrongFocus同时控件也通过鼠标滚轮获取到焦点(新增选项,很少使用)。
= g++ DEFINES = -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED CFLAGS = -pipe -O2 -Wall -W -D_REENTRANT $(DEFINES) CXXFLAGS = -pipe -O2 -Wall -W -D_REENTRANT $(DEFINES) INCPATH /local/Trolltech/Qt-4.8.6/mkspecs/features/qt_functions.prf \ /usr/local/Trolltech/Qt-4.8.6/mkspecs /Qt-4.8.6/mkspecs/features/qt.prf \ /usr/local/Trolltech/Qt-4.8.6/mkspecs/features/unix/thread.prf /qt.prf: /usr/local/Trolltech/Qt-4.8.6/mkspecs/features/unix/thread.prf: /usr/local/Trolltech/Qt-4.8.6
最近想用Qt写一个中国象棋的项目,在网上找了几个例子后,发现关于绘图部分基础为0 ,于是根据项目需要学习一下。 Qt的2D绘图是基于QPainter类的。QPainter既可以绘制几何图形(点、线、矩形、椭圆、弧形、饼状图、多边形和贝塞尔曲线等)也可以绘制像素映射、图像和文字。 Qt中围绕着QGraphicsView、QGraphicsScene、QGraphicsItem类引入了一种全新的“图形视图”体系【了解概念即可,不作详细介绍】。——摘自C++ GUI Qt4编程。 painter.setPen(QColor(0, 160, 230)); // 绘制直线 painter.drawLine(QPointF(0 ,0), QPointF(width() / 2, height() / 2)); } 在重新实现的事件函数中,先定义一个QPainter并传入this,之后设置画笔属性,最后调用drawLine()接口,一个画线段的动作就完成了。
QWidget *parent = 0); //构造函数 ~Calc(); //析构函数 signals: public slots: void append1(); void append2( ::AlignRight); //将le的显示设定为右对齐 connect(pb1,SIGNAL(clicked()),this,SLOT(append1())); connect(pb2, ) //输入2 { res.append("2"); le->setText(res); } void Calc::append3() //输入3 { res.append("3"); -4.8.6/bin/uic calc.ui -o ui_calc.h g++ -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -4.8.6/bin/uic calc.ui -o ui_calc.h g++ -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB
include <stdio.h> //printf 在这里面声明 #include "pic.h" QString pic[5]={"pics/p0.jpg","pics/p1.jpg","pics/p2. jpg -rw-rw-r-- 1 emacs emacs 915481 Feb 26 13:51 p1.jpg -rw-rw-r-- 1 emacs emacs 871733 Feb 26 13:51 p2. -4.8.6/bin/uic pic.ui -o ui_pic.h g++ -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB - -o main.o main.cpp g++ -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I. pic.h -o moc_pic.cpp g++ -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB
在我们前文熟悉Qt的整个框架的时候,使用的函数connect,参数分别就是上面涉及到了四个点,所以实际上Qt中的信号和Linux中的信号是有很多相同点的,那么有了Linux的基础,在这里学习Qt我们就要轻松很多了 object defining in which event loop is going to be executed template <typename Func1, typename Func2> static inline typename std::enable_if<QtPrivate::FunctionPointer<Func2>::ArgumentCount == -1, QMetaObject typename QtPrivate::FunctionPointer<Func1>::Object *sender, Func1 signal, const QObject *context, Func2 之前的了,对于新版的Qt就不用这样写了,实在是麻烦,新版的Qt5支持了一个重载版本,使得第二个和第四个参数变成了泛型指针,我们也就不用宏了,当然你要想那样写应该也没事儿~ 这个时候的Qt就有了一个类型检查的功能
http://www.devbean.net/2013/02/qt-study-road-2-model/ 在前面两章的基础之上,我们将开始介绍 model 的通用概念。 在 Qt 中,这个接口由QAbstractItemModel类进行定义。不管底层数据是如何存储的,只要是QAbstractItemModel的子类,都提供一种表格形式的层次结构。 = model->index(2, 1, QModelIndex()); A 还有自己的子项。 例如,Qt::DisplayRole用于视图的文本显示。通常来说,数据项包含一系列不同的数据角色,这些角色定义在Qt::ItemDataRole枚举中。 注意,该函数返回值是QVariant,实际是一个字符串,因此我们直接转换成QString: 1 2 3 QString text = model->data(index, Qt::DisplayRole
正文 我之前在这篇博文《OSG嵌入QT的简明总结》中论述了OSG在QT中显示的可视化问题。 原先的osgQt版本是兼容Qt4的QGLWidget,这个类Qt官方准备废弃了,现在使用的OpenGL支持组件是QOpenGLWidget,新的osgQt项目就是基于这个类来进行扩展的。 QSurfaceFormat format = QSurfaceFormat::defaultFormat(); #ifdef OSG_GL3_AVAILABLE format.setVersion(3, 2) QSurfaceFormat::OpenGL); format.setOption(QSurfaceFormat::DebugContext); #else format.setVersion(2, 参考 OpenSceneGraph + QOpenGLWidget - minimal example OSG 使用Qt的QOpenGLWidget
前言 PySide2 QT PySide2 是一个用于 Python 编程语言的开源框架,它提供了与 QT C++ 框架的绑定,使得开发者可以使用 Python 进行跨平台的图形用户界面 (GUI) PySide2 是 QT 的官方 Python 绑定,由 The Qt Company 维护和支持。它允许开发者使用 Python 的简洁语法和强大的功能来构建 GUI 应用程序,而无需学习 C++。 PySide2 提供了对 QT 的完整访问,包括 QT 的核心库、GUI 组件、网络功能、多媒体支持等。 QT PySide2 Designer 提供了一个直观和用户友好的界面,使得界面设计变得简单和快速。 总结而言,QT PySide2 Designer 是一个强大的界面设计工具,使得开发者能够轻松创建和编辑 QT GUI 应用程序的界面 ---- 提示:以下是本篇文章正文内容,下面案例可供参考 一、安装
(aFileName.isEmpty()) return; openTextByIODevice(aFileName); saveTextByIODevice(curPath+"\\2.
线程 QT中的QThread提供了与平台无关的线程,一个QThread代表了一个应用程序中可用独立控制的线程,它与进程中的其他线程共享数据,但是是独立执行的,QThread从run()函数开始执行,默认 run()通过exec()来开启事件循环,并在线程内运行一个Qt事件循环。
一、Qt事件 1、事件介绍 事件是应用程序内外部产生的事情以及动作的统称,常见的所有事件例如鼠标事件QMouseEvent,键盘事件QKeyEvent等等都是继承自QEvent 2、事件的处理 在Qt中几乎所有的 ::Key_A) { qDebug() << event->key(); } } (2)组合键 在帮助中搜索Qt::KeyboardModifier,其中定义了在处理键盘事件时对应的修改键 ControlModifier) //检查是否按下了Ctrl键,event->modifiers返回当前按键事件的修饰键状态 { if(event->key() == Qt ::LeftButton) { qDebug() << "鼠标左键"; } if(event->button() == Qt::RightButton) { static int n2 = 1; ui->label_2->setText(QString::number(n2++)); } } timerevent
MinGW 7.3.0 64-bit Qt SDK内置的C++编译器,相当于windows版本的gcc,g++。 Qt Creater 如果要使用VS进行编译 接受
一、Qt 下载 Qt 开发环境下载地址 : https://download.qt.io/archive/qt/ 该界面可以下载 Qt 各个版本的开发环境 ; Qt 版本选择 , Qt 的各个大版本都在同步更新 5.14 版本中 , BUG 最少 , 性能最好的版本 ; 另外还有一点需要指出的是 Qt 从 5.15 版本开始 , 不再提供离线安装包 , 需要自己下载源码编译安装 , 因此这里选择安装 Qt 5.14.2 ) ; 二、Qt 安装 双击安装软件 , 点击 " Next " , 没有 Qt 账号 , 输入账户名邮箱 , 密码 , 确认密码 , 同意协议 , 然后点击 " Next " , 点击 " Next Qt 安装目录 , 点击下一步 , 给了个警告 , 点击 Yes , 目录中是 Qt 安装文件 , 没有影响 , 继续往下走 , Qt 安装时 , 推荐将所有的组件全部安装 , 减少一些不必要的麻烦 Visual Studio 整合使用的 ; 同意许可协议 , 设置快捷方式 , 点击安装 , 开始安装 , 等待安装完毕 , 大约 10 分钟 ~ 2 小时 , 安装完成 , 点击 " 下一步 "
一、Qt网络 在进行网络编程之前,需要在项目中的.pro文件中添加network模块 实际开发中不会用Qt直接写服务器的,因为服务器是没有图形化界面的,一般我们会用其他的语言软件写好程序之后与Qt联合使用 数据报 方法 说明 data 获取数据报内部持有的数据,返回QByteArray senderAddress 获取数据报中包含的对端的IP地址 senderPort 获取数据报中包含的对端的端口号 (2) ui->listWidget->addItem("客户端:"+text); //清空输入框内容 ui->lineEdit->setText(""); } qudpsocket 2、 会在下个事件循环中析构释放该对象 信号 说明 readyRead 有数据到达准备就绪时触发 disconnected 断开连接时触发 (2)回显服务器 Widget::Widget(QWidget this->setWindowTitle("服务器"); // 2.
Qt 网络 和多线程类似,Qt 为了⽀持跨平台,对网络编程的 API 也进行了重新封装。 在进行网络编程之前,需要在项目中的 .pro 文件中添加 network 模块。 添加之后要手动编译⼀下项目,使 Qt Creator 能够加载对应模块的头文件。 1. QNetworkDatagram 表示⼀个 UDP 数据报 (2)回显服务器 1、创建界面,包含⼀个 QListWidget 用来显示信息 2、 创建 QUdpSocket 成员,修改 widget.h 设置窗⼝标题 this->setWindowTitle("服务器"); // 2. ; ui->listWidget->addItem(log); // 2.
http://www.devbean.net/2013/02/qt-study-road-2-qlistwidget-qtreewidget-qtablewidget/ 上一章我们了解了 model/ = new QTreeWidgetItem(root, QStringList(QString("Leaf 2")));leaf2->setCheckState(0, Qt::Checked); QList 2");leaf2->setCheckState(0, Qt::Checked); QList<QTreeWidgetItem *> rootList;rootList << root;treeWidget.insertTopLevelItems = new QTreeWidgetItem(root, QStringList(QString("Leaf 2")));leaf2->setCheckState(0, Qt::Checked); QList 2");leaf2->setCheckState(0, Qt::Checked); QList<QTreeWidgetItem *> rootList;rootList << root;treeWidget.insertTopLevelItems
QT容器 QString类 隐式共享: 隐式数据共享机制去最大化资源有效利用和最小化复制克隆操作。 = s;//Hello数据块引用计数为3 QString s4 = s2;//He数据块引用计数为2 QString s5 = s2;//He数据块引用计数为2 初始化 //const BOOL qDebug()<<s4.startsWith("哔哩哔哩"); QString s5 = "tom"; qDebug()<<s5.startsWith("tom",Qt 是否包含 qDebug()<<s5.contains("o");//同样可以表明大小写是否敏感 //比较 qDebug()<<QString::compare("Tom","tom",Qt 类型的值,包括QColor,QBrush,QFont,QRect,QString及QSize等等,而且能存放Qt的容器类型值。
按钮、菜单等)与计算机进行交互,而无需编写程序代码,图形用户界面的主要目的是使得用户能够更加直观、便捷地操作计算机,提高用户体验,也就是专门提供给非程序员的用户使用,因为并不是所有的用户都会编写代码 2、 ,提供了使用 QML 创建用户界面所需的一切,包括可视化、交互、动画、模型、视图、粒子效果以及着色效果等 (2)选择项目路径 就是选择文件保存的位置,注意这个位置一定要全英文 (3)选择构建系统 ,setText是设置文本,setParent是将按钮挂载到对象树上,对象树也是一种树形结构,通过对象树我们可以对树上的对象进行统一的析构,挂载在对象树上的内容才能被窗口显示 按钮默认在窗口左上角 (2) 可视化操作实现 双击打开widget.ui文件,将Push Button拖到界面上,双击更改内容 这就是QT编译器自动生成的代码,我们通过自己编写的纯代码方式实现也会被解析成类似的代码 2、使用标签实现 QLabel* q = new QLabel; q->setText("Hello World"); q->setParent(this); } Widget::~Widget() { } (2)
本文转载自豆子的Qt 学习之路2的博客Qt 学习之路 2(64):使用 QJsonDocument 处理 JSON 在C++中有不少JSON库,比如 nlohmann/json JSON for Modern 本文直接使用Qt5中的使用 QJsonDocument处理 JSON,关于QJsonDocument可以参考官方文档QJsonDocument 上一章Qt 学习之路 2(63):使用 QJson 处理 QJson 是一个基于 Qt 的第三方库,适用于 Qt4 和 Qt5 两个版本。不过,如果你的应用仅仅需要考虑兼容 Qt5,其实已经有了内置的处理函数。 注意,QJsonDocument要求使用 Qt5,本章中所有代码都必须在Qt5环境下进行编译运行。 创建 QJsonParseError 对象,用来获取解析结果 QJsonParseError error; // 2.