qt
ningto.com
个人站点:https://ningto.com
展开
-
Qt 正确的显示窗口
显示窗口看起来很简单,但是有一些细节要注意的。通常有下面几种情况需要展示一个窗口:第一次创建后展示窗口最小化窗口不在最前面窗口销毁后再次创建(同第1种)注意: 这里说的不是通过任务栏来激活窗口,而是通过用户设计的按钮或者菜单来打开窗口通常的做法如下:widget->show();widget->raise();这里有两个问题:窗口最小化后出不来窗口从非激活状态显示出来后点击主界面,主界面还是被遮挡了,只有在子窗口上点击一下激活子窗口再去主窗口上点击才有效下面代码原创 2021-01-13 14:24:25 · 1317 阅读 · 1 评论 -
QWidget QLabel没有响应keyEvent键盘事件
在Qt中我们经常通过重写下面两种虚函数来实现按键事件virtual void keyPressEvent(QKeyEvent *event);bool eventFilter(QObject* watched, QEvent* event);但是有时候会遇到无法触发的情况(特别是QWidget,QLabel),这个时候我们会考虑是不是被父窗口给截获了没有传递给子窗口。如果依旧没有解决问题,那可能是这个widget没有焦点的缘故,通常可以通过鼠标点击和tab键可以获取焦点,但是像QWidget、QL原创 2021-01-12 07:55:18 · 1900 阅读 · 0 评论 -
qt.network.ssl: QSslSocket Qt支持SSL https
Qt使用QNetworkAccessManager类时默认是不支持https协议的,需要增加openssl动态库。我发现新版本的Qt和老版本的Qt所需要的openssl库的名字竟然不一样。老的是:libeay32.dll、ssleay32.dll新的是:libcrypto-1_1.dll、libssl-1_1.dll具体的文件可以在QtCreator包里面去找。...原创 2021-01-12 07:48:54 · 367 阅读 · 0 评论 -
QTableWidget整行高亮去虚线,样式定制
很常见的一种需求,但是很可惜Qt没有一种比较简单的实现方式。在网上找了很多资料也没有找到,实现方法比较复杂,但是经过我的实验,下面这种方法是可行的,而且有很多意想不到的好处。定义接口类存储当前hovered行,split行是实现其他需求的可以不考虑 class IView { public: virtual void setHoveredRow(int row) { row_ = row; } virtual void setSplitRow(int row) { splitRow_ =原创 2021-01-12 07:47:44 · 1450 阅读 · 0 评论 -
windows判断窗口是否置顶、设置取消置顶、设置前景
判断窗口是否置顶 bool isWndTopMost(HWND hwnd) { return GetWindowLong(hwnd, GWL_EXSTYLE) & WS_EX_TOPMOST; }设置和取消置顶 void showWndTopMost(HWND hwnd){ RECT rect; GetWindowRect(hwnd原创 2017-03-31 22:11:33 · 8627 阅读 · 2 评论 -
QWebView到QWebEngineView
vs2013中的Qt5插件从Qt Project Settings中没有能引入QWebEngineView和QWebChannel的模块,我们可以在vs2013中手动加入。 附加包含目录:(QTDIR)\include\QtWebEngineWidgets,(QTDIR)\include\QtWebEngineWidgets, (QTDIR)\include\QtWebChannel 附加依赖项原创 2016-07-30 22:17:15 · 16940 阅读 · 11 评论 -
QFrame与QWidget的区别
从QWidget继承实现了一个自定义的widget,在设置样式表的时候发现没有生效,发现原来跟QFrame有关QFrame与QWidget的区别QFrame是基本控件的基类,QWidget是QFrame基类,关系如下: QPushButton,QLabel… -> QFrame -> QWidget我们经常会从QFrame或者QWidget继承然后自定义一个复杂的widget,在设置样式表的时原创 2016-06-04 07:35:33 · 50688 阅读 · 3 评论 -
方形图片使用QLabel显示成圆形
方形图片使用QLabel显示成圆形#ifndef MASKLABEL_H#define MASKLABEL_H#include <QLabel>class MaskLabel : public QLabel{public: MaskLabel(QWidget *parent=0);protected: void paintEvent(QPaintEvent *);};#end原创 2016-06-04 07:32:52 · 5662 阅读 · 1 评论 -
Qt设置窗口标题和exe图标
Qt窗口标题和exe设置图标,如工程名:joke。smile.ico是图标名1.给窗口标题设置图标比较简单: QApplication a(argc, argv); Dialog w; w.setWindowTitle("Joke"); QIcon icon(":/rc/smile.ico"); w.setWindowIcon(icon);原创 2016-04-06 11:19:24 · 16808 阅读 · 3 评论 -
windows QtCreator调试配置
下载Get Debugging Tools for Windows (WinDbg),地址:https://msdn.microsoft.com/en-us/windows/hardware/hh852365.aspx 找到Get Debugging Tools for Windows (WinDbg) (from the SDK)的链接 双击sdksetup.exe安装,记住下载的地址。原创 2016-03-18 15:54:35 · 706 阅读 · 0 评论 -
QWebView和js交互
1.先上代码: dialog.h#ifndef DIALOG_H#define DIALOG_H#include <QDialog>namespace Ui {class Dialog;}class Dialog : public QDialog{ Q_OBJECTpublic: explicit Dialog(QWidget *parent = 0); ~Dial原创 2015-12-21 16:38:39 · 8949 阅读 · 3 评论 -
C++ Qt 调用动态库 插件
1.隐式调用原创 2014-07-20 22:55:42 · 5419 阅读 · 0 评论 -
How-to: parsing XML with Qt
How-to: parsing XML with QtWhy use XML?The purpose of this document is to show a couple ways of transforming data from a saved stateinto useful objects in memory, on the Boardcon 2440. The document转载 2015-10-15 09:11:56 · 919 阅读 · 0 评论 -
Qt 大数据列表展示
Qt中使用QListWidget, QTableWidget,QTreeWidget(只考虑最大3层)自定义子widget来展示数据的时候,通常子widget的个数达到了上千加载展示就会很慢,而且很耗内存。原因是new出来的widget太多了。下面的解决方案希望能帮助你。原理: 其实一个列表展示给用户看的高度是很有限的不会超过一个屏幕的高度,而这个高度只需要很少的子widget就可以填充满,所以原创 2016-08-04 22:59:26 · 7370 阅读 · 7 评论 -
Windows下使用VS2013编译Qt5.6源码
用过Qt的QHBoxLayout,QVBoxLayout再看flex布局有很多相似之处,特别要注意的是flex属性是flex-grow, flex-shrink 和 flex-basis的简写,默认值为0 1 auto,后面两个是可以省略的。当一个容器没有显示出来时要注意它应该设置宽高或者flex值是不是大于0。<!DOCTYPE html><html lang="en"><head>原创 2017-02-27 20:23:00 · 3793 阅读 · 0 评论 -
Qt5.6支持高分辨率
Qt5.6及以后版本支持高分辨率很容易,在QApplication创建之前加入如下代码:QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling); 打开这个设置之后在高分辨率的电脑上注意: * 不要混用获取尺寸位置相关的windows API,否则你会发现GetWindowRect获取的窗口宽高和使用QWidget函数width(),he原创 2017-02-27 20:28:51 · 3389 阅读 · 0 评论 -
Qt自定义Tooltip
原文地址:https://www.ningto.com/edit/5aa23e8a43bef42108349a5a系统自带的tooltip太简单了,自定义tooltip就灵活多了,可以定义各种各样的控件样式。从QDialog继承class Tooltip : public QDialog设置无边框属性setWindowFlags(Qt::FramelessWin...原创 2018-07-03 15:43:09 · 6425 阅读 · 2 评论 -
QTableView多选
首先要了解它的setSelectionBehavior和setSelectionMode这两个接口,接下来再来考虑选中的问题。查看官方文档,setSelectionBehavior用来设置选中的是单元格,行还是列,setSelectionMode用来设置用户点击后的界面响应:单选,多选,扩展选择(Ctrl+Shift键),相邻,不选中。这里仅介绍设置为ExtendedSelection mode后...原创 2018-02-19 08:55:57 · 4784 阅读 · 1 评论 -
Qt回调到UI线程
桌面客户端程序主线程就是UI线程,我们经常要将网络中获取到的数据展示到界面上,通常有同步和异步两种方式,同步方式会阻塞UI,所以这种方式可以忽略了(特殊情况下可以使用)。大多数异步方式请求后是在子线程中返回数据的,而在这里我们是不能直接操作UI的。下面介绍两种方法将子线程获取到的数据抛到UI层处理:调用和接收在一起UI层直接调用下面方法就可以在槽函数中处理应答了 通过网络请求...原创 2018-02-19 08:54:21 · 2599 阅读 · 0 评论 -
API设计原则(下)
API的语义和文档当传值为-1的参数给函数,函数会是什么行为?有很多类似的问题……是警告、致命错误还是其它?API需要的是质量保证。API第一个版本一定是不对的;必须对其进行测试。 以阅读使用API的代码的方式编写用例,且验证这样代码是可读的。还有其他的验证方法,比如 * 让别人使用API(看了文档或是先不看文档都可以) * 给类写文档(包含类的概述和每个函数)命名的艺...转载 2018-02-19 08:50:30 · 315 阅读 · 0 评论 -
API设计原则(中)
C++相关值 vs. 对象1. 指针 vs. 引用指针(pointer)还是引用(reference)哪个是最好的输出参数(out-parameters)?void getHsv(int *h, int *s, int *v) const;void getHsv(int &h, int &s, int &v) const;大多数C++书籍推...转载 2018-02-19 08:49:52 · 450 阅读 · 0 评论 -
API设计原则(上)
译序Qt的设计水准在业界很有口碑,一致、易于掌握和强大的API是Qt最著名的优点之一。此文既是Qt官网上的API设计指导准则,也是Qt在API设计上的实践总结。虽然Qt用的是C++,但其中设计原则和思考是具有普适性的(如果你对C++还不精通,可以忽略与C++强相关或是过于细节的部分,仍然可以学习或梳理关于API设计最有价值的内容)。整个篇幅中有很多示例,是关于API设计一篇难得的好文章。需...转载 2018-02-19 08:49:11 · 464 阅读 · 0 评论 -
QWebEngineView与js交互
Qt新版本使用QWebEngineView来展示html页面对QWebView不再进行维护了,QWebEngineView使用chromium内核将带来更好的用户体验。对QWebView感兴趣的可以参考:http://blog.csdn.net/tujiaw/article/details/50372892从QWebView到QWebEngineView,参考:http://blog.cs...原创 2016-06-12 21:11:50 · 28504 阅读 · 8 评论 -
QComboBox item文字重叠
当给QComboBox设置行交替使用不同颜色后,两个相邻的item文字有重叠ui.comboBox->view()->setAlternatingRowColors(true);解决方法: 在Qt Designer中给comboBox的字体点大小设置为当前实际要展示的文字大小,默认为9,如果我们的文字要显示12px,将其改为12。原创 2017-03-31 22:12:05 · 1989 阅读 · 0 评论 -
QComboBox+QCompleter实现搜索自动匹配
搜索框默认隐藏起来,在界面上按Ctrl+F的时候打开搜索匹配输入框 m_speedSearch = new SpeedSearch(this); m_speedSearch->initData(QStringList() << "123" << "124" << "110" << "111"); m_speedSearch->hide(); QShortcut *shor原创 2017-03-31 22:11:06 · 5891 阅读 · 1 评论 -
QLabel根据拉伸宽度自动加省略点和ToolTip
#pragma once#include class ElidedLabel : public QLabel{ Q_OBJECTpublic: explicit ElidedLabel(QWidget *parent=0, Qt::WindowFlags f=0); explicit ElidedLabel(const QString &text, QWidget *paren原创 2015-04-10 18:24:59 · 3166 阅读 · 0 评论 -
Qt udp socket用于进程间通信
简单协议可以使用:json + base64(有需要)#ifndef UDPSOCKET_H#define UDPSOCKET_H#include #include #include class QUdpSocket;class UdpSocket : public QObject{ Q_OBJECTpublic: typedef std::function原创 2015-10-20 23:26:27 · 1594 阅读 · 0 评论 -
Qt笔记
1.Qt中的类没有虚析构?由于Qt所有类都是从QObject继承下来的,当父类销毁的时候会自动帮你析构子类,所以不用担心delete父类的时候子类没有被销毁。2.QFontMetrics::elidedText文本超过一定长度可以使用...3.事件循环阻止代码继续执行QEventLoop eventLoop;QObject::connect(&wnd, SIGNAL(sigClos原创 2014-12-31 21:59:15 · 798 阅读 · 0 评论 -
Qt鼠标移动显示隐藏窗口
如图,绿色的和红色的原创 2014-08-16 08:24:53 · 7016 阅读 · 1 评论 -
Qt4到Qt5
vs2010+sp11.涉及到QtGui头文件的替换成QtWidgets,并且pro中加入:greaterThan(QT_MAJOR_VERSION, 4): QT += widgets2.当前目录的子目录包含父目录的头文件应该是:#include "../test.h",如果想这样写#include "test.h",需要在pro中加入:INCLUDEPATH += $$PWD3原创 2014-08-26 18:30:52 · 7274 阅读 · 0 评论 -
Qt my note
1.QLabel设置背景图,字体大小颜色,居中this->lbl_msgnum->setStyleSheet("background-image:url(:/images/bg.png);color:rgb(255, 255, 255);");this->lbl_msgnum->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter);this原创 2014-08-26 18:23:37 · 904 阅读 · 0 评论 -
Qt 自定义按钮
按钮有三种状态,正常,鼠标滑过,鼠标左键anxia原创 2014-06-22 20:09:51 · 7108 阅读 · 0 评论 -
拖曳QTextEdit QListWidget
#ifndef TEXTEDIT_H#define TEXTEDIT_H#include class TextEdit : public QTextEdit{ Q_OBJECTpublic: explicit TextEdit(QWidget *parent = 0);protected: void dragEnterEvent(QDragEnterEve原创 2014-07-13 21:35:02 · 1447 阅读 · 0 评论 -
Qt 图片按钮
练习一下给QPushButton添加背景图片,原创 2014-06-22 10:23:58 · 8589 阅读 · 2 评论 -
Qt 笔记
Qt中的每个类,都有一个对应的同名头文件,其中包含其类定义。例如要使用QApplication类,则需要在程序中添加" #include " QApplication类用于管理应用程序范围内的资源。其构造函数需要main函数的argc和argv作为参数。 widget被创建时都是不可见的(always created hidden)。widget中可容纳其它wi转载 2014-05-30 10:12:13 · 3679 阅读 · 0 评论 -
Qt 在布局好的界面上显示一个控件
如图所示,不管怎么拉伸移动原创 2014-06-28 09:52:47 · 4187 阅读 · 0 评论 -
Qt 天气
写了一个简单的现实天气信息的例子原创 2014-06-02 19:58:52 · 3191 阅读 · 2 评论 -
Qt tcp client程序
用Qt写了个简单的Tcp客户端程序,原创 2014-04-19 22:15:32 · 6238 阅读 · 0 评论 -
Qt截屏
#ifndef GRABWIDGET_H#define GRABWIDGET_H#include #include class GrabWidget : public QWidget{ Q_OBJECTpublic: explicit GrabWidget(QWidget *parent = 0);signals:public slots:public:原创 2014-05-15 17:45:29 · 2647 阅读 · 1 评论 -
Qt 无边框窗口自定义标题栏
直接上代码。用法:原创 2014-10-26 01:02:35 · 10190 阅读 · 2 评论