QT
文章平均质量分 53
wangw8507
长沙梅溪湖
展开
-
QObject派生类中使用tr()翻译无效的问题
QT tr() 翻译无效 Q_OBJECT原创 2022-12-03 09:40:56 · 1552 阅读 · 2 评论 -
QFont-使用外部字体文件的问题
QFont 字体文件 reslove QPainter原创 2022-11-28 14:43:50 · 1140 阅读 · 0 评论 -
Qt中和DPI相关的几个术语解释(来自Qt文档)
Qt中和DPI相关的几个术语解释(来自Qt文档)原创 2022-10-15 14:21:11 · 905 阅读 · 0 评论 -
Qt5在VS中调试时查看变量只能看到p,d指针的问题处理
Qt5在VS中调试时查看变量只能看到p,d指针的问题处理原创 2022-07-04 18:12:14 · 940 阅读 · 0 评论 -
VS2019+Qt5.15.2 编译 QtWebEngine(带MP4解码)
编译准备 下载源码:从https://download.qt.io/下载qt5.15.2版本源码。或者安装QT时选择带源码安装。个人比较喜欢原汁原味的下载。 看个人喜好选择从哪个圈下。 个人Index of /official_releases/qt/5.15/5.15.2/single 下的源码。 编译软件环境:Python 2.7(这么多年过去python3不支持挺蛋疼的)。Visual 2019(喜欢用其它版本也可以,出错自己想办法解决咯。组件能装多少就装多少)Perl 建..转载 2022-05-26 10:55:58 · 2205 阅读 · 1 评论 -
QT中使用DBUS
D-Bus和QT本文以一个实作为例,介绍D-Bus在QT下的绑定。在实作中,我们会在Session Bus上注册一个HotelService,通过这个Service,可以实现check in,check out以及query的动作。为避免歧义,本文对D-Bus中的一些关键术语的表述依然采用英文。这些术语包括:D-Bus, IPC, Message,Message Bus, System Bus, Session Bus, Service, Object, Method, Signal, In..转载 2022-05-13 09:02:33 · 1234 阅读 · 0 评论 -
QPainter绘制文本时自动换行
很简单,调用QPainter::drawText()时,传入Qt::TextWordWrap标志即可 !截取一点Qt的文档:void QPainter::drawText(const QRectF &rectangle, int flags, const QString &text, QRectF *boundingRect = nullptr)The flags argument is a bitwise OR of the following flags:Qt::Al原创 2022-05-11 17:43:13 · 3358 阅读 · 1 评论 -
QT编写跨平台代码注意事项
1.注意大小写(文件名,路径,控件提升名称等)2.路径使用正斜杠,不使用反斜杠对于平台特定要求,使用QDir::toNativeSeparators()进行转换3.不在自定义的命名空间里面使用Q_DELCARE_METATYPEnamespace myspace{ struct stru{ int x; } Q_DELCARE_METATYPE(myspace::stru) //BAD!!!!}Q_DELCARE_METATYPE(myspace::stru) //GOOD!!!!原创 2022-03-02 14:30:51 · 745 阅读 · 1 评论 -
天杀的QNetworkRequest终于加入超时机制了
QT总算是良心发现,从5.15版本开始支持了QNetworkRequest的超时设置,再也不用自己造轮子了!void QNetworkRequest::setTransferTimeout(int timeout = DefaultTransferTimeoutConstant)Sets timeout as the transfer timeout in milliseconds.Transfers are aborted if no bytes are transferred bef.原创 2022-01-26 14:08:16 · 2478 阅读 · 4 评论 -
Qt隐式共享机制带来的陷阱
为了提升性能,Qt框架里面使用了隐式共享技术(基于d-p模式),也可以理解为写时复制技术(COW)。在开发过程中我们一般不需要去关系隐式共享的底层运行机制,但是了解一下还是有必要的。 关于隐式共享,网上有很多相关介绍的文章,这里就不多赘述。写这篇文章的目的,只是记录一下这几天在项目上因隐式共享造成的一个BUG。相较于文档之类的理论只是,结合实际项目中的问题来理解隐式共享,可能会有更深的体会。 先看一下以下代码: //定义一个Data数据结构,包含一个成员x s...原创 2021-12-06 11:26:15 · 450 阅读 · 0 评论 -
Qt快捷键字符串映射表
Qt快捷键 映射"Esc",/*Qt::Key_Escape 0x01000000 */"Tab",/*Qt::Key_Tab 0x01000001 */"Shift+Tab",/*Qt::Key_Backtab 0x01000002 */"BackSpace",/*Qt::Key_Backspace 0x01000003 */"Return",/*Qt::Key_Return 0x01000004 */"Enter",/*Qt::Key_Enter 0x01000005 T原创 2021-10-28 17:52:03 · 1117 阅读 · 0 评论 -
QFormLayout的坑
需要使用QFormLayout实现一个很简单的布局:在一个QFrame里面使用QFormLayout布局,QFormLayout的filed是一个QProgressBar,程序运行后,前面的文本竟然看不到...........调试QFormLayout的布局逻辑代码,发现QFromLayout布局一行时,会先计算label和filed的sizeHint,并根据sizeHint来决定label和field的position和size。上面文本看不到的原因是因为QProgressBar的默.原创 2021-10-28 11:58:12 · 319 阅读 · 0 评论 -
QObject::tr()
QT开发过程中,QObject::tr()用得比较多,尤其是需要做多语言翻译时。譬如:QtGuiApplication1::QtGuiApplication1(QWidget *parent) : QMainWindow(parent){ ui.setupUi(this); ui.pushButton->setText(tr("你好"));} 如果程序安装了对应的翻译文件,那么pushButton的文本会自动替换为目标语言对应的翻译。上面这种调用应付一...原创 2021-10-26 15:51:03 · 1658 阅读 · 0 评论 -
QT中创建一个带BOM的UTF8编码文件
void CreateUTF8WithBom(const QString& path){ QFile f(filePath); f.open(QIODevice::WriteOnly | QIODevice::Truncate); QTextStream ts(&srcFile); ts.setGenerateByteOrderMark(true); //这句是重点 ts.setCodec("UTF-8"); ts << .原创 2021-08-21 17:42:46 · 1285 阅读 · 0 评论 -
QFileDialog如何选择多个目录
这是网上看的别人的实现思路,大概思路就是设置QFileDialog的listView或者treeView多选模式,再通过selectedFiles()获得选中项。QStringList GetMultiDirectory(){ QFileDialog fileDlg(this, tr("Select Directory"), ""); fileDlg.setFileMode(QFileDialog::DirectoryOnly); fileDlg.setOption(QFileDialo原创 2021-08-21 15:15:57 · 619 阅读 · 0 评论 -
QT插件机制中宏Q_PLUGIN_METADATA和Q_INTERFACES的作用
今天简单地了解了一下QT的插件机制,其实也没有什么可多说的,理论上说到底无非就是库的加载和函数地址的查找。但是QT对于插件机制的支持是建立在它独有的原对象系统基础之上,自然也有自己的一套插件实现规则,或者说是语法。一般来讲,照着QT给的文档和DEMO,很容易就能实现一个插件,这里面最主要的就是三个宏:Q_DECLARE_INTERFACEQ_PLUGIN_METADATAQ_INTERFACES那么,这三个宏到底在整个插件机制中到底起到一个以什么作用呢?Q_DECLAR...原创 2021-07-31 17:57:32 · 6953 阅读 · 2 评论 -
QWidget: isVisible() == !isHidden() 吗?
判断QWidget是否可见,调用isVisible()还是isHidden()?在写这篇文章之前,我一直以为是一样的,也就是:原创 2021-06-02 17:15:14 · 2343 阅读 · 0 评论 -
Qt中的topLevelWidgets()到底是哪些widgets?
先看QT文档对topLevelWidgets()的描述:[static] QWidgetList QApplication::topLevelWidgets()Returns a list of the top-level widgets (windows) in the application.Note: Some of the top-level widgets may be hidden, for example a tooltip if no tooltip is currently sh原创 2021-05-17 09:15:48 · 3164 阅读 · 0 评论 -
QWidget::setGeometry()不生效问题解决方案
开发过程中经常碰到setGeometry()不生效的问题,发现只要在setGeometry()之前调用一下show()或者setVisible(true)就可以了!问题就出在setVisible(true)!!!setVisible()会判断当前控件的WA_WState_Created属性,意思就是看看控件是否已经创建了window,如果为没有创建,就调用create()方法创建一个window,坏就坏在这里!跟代码发现QT为控件创建新窗口时,会自动校正window的geometry,也就是说之前设原创 2021-05-17 09:12:21 · 6221 阅读 · 2 评论 -
QFileDialog记录上次打开位置
QFileDialog几个选择文件和文件夹的方法都有一个默认路径参数,如:QString getExistingDirectory(QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), QFileDialog::Options options = ShowDirsOnly)参数const QString &dir = QString()..原创 2021-05-17 09:10:15 · 3546 阅读 · 0 评论 -
QWidget窗口置顶闪烁问题
QWidget有窗口属性设置函数:void setWindowFlags(Qt::WindowFlags type)一般调用改函数即可让窗口置顶显示QWidget* pWidget = new QWidget();pWidget->setWindowFlags(pWidget->windowFlags() | Qt::WindowStaysOnTopHint)但是注意看setWindowFlags()函数的说明:Note: This function calls s原创 2021-05-17 08:57:14 · 3417 阅读 · 11 评论 -
QTextEdit设置文本样式
QTextEdit可以通过qss设置边框属性,但是由于QTextEdit本身显示的是一个HTML,所以不能像其他的控件直接使用qss对文本设置样式。看一个我们再QtDesigner中对一个QTextEdit进行文本编辑的例子:上图的HTML中有好几个标签都有样式,譬如<body>,<p>,<span>等,到底应该修改哪个标签的样式呢? 1.修改文本边距和行高<p style="margin-top:12px; margin-bott...原创 2021-05-17 08:52:29 · 4284 阅读 · 0 评论 -
使用QTemporaryFile判断目标路径是否可写
在判断一个目标路径是否可写时,QFileInfo的isWritable()并不好用,一般我们会基于QFile尝试在目标路径新建一个临时文件,通过判断文件是否创建成功间接判断目标路径是否可写。如果自己实现这个逻辑,需要做文件打开,关闭,删除等一系列的处理。我们可以借助QTemproryFile类实现同样的目的.bool IsDirWritable(const QString& dir){ QTemporaryFile testFile(dir+ "\\XXXXXX");原创 2021-05-17 08:47:00 · 326 阅读 · 0 评论