Qt
不免费
Funny-Boy
这个作者很懒,什么都没留下…
展开
-
2024年6月-7月
1、mysys使用原创 2024-06-05 22:01:52 · 168 阅读 · 0 评论 -
qmake 读三种变量。
qmake配置原创 2022-06-28 11:34:04 · 204 阅读 · 0 评论 -
Qt的一些用法(31-40)
三十一 、遮罩的实现遮罩可以用来设置窗口的颜色class MaskForm : public QWidget{ Q_OBJECTpublic: explicit MaskForm(QWidget *parent = 0) : QWidget(parent) { init(); } ~MaskForm(){}; /** * @brief 设置遮罩的颜色,透明度 * @param color 遮罩颜色原创 2021-12-21 09:56:38 · 657 阅读 · 0 评论 -
关于mousePressEvent, mouseReleaseEvent,mouseDoubleClickEvent遇到的坑
#include "mainwindow.h"#include "ui_mainwindow.h"#include <QDebug>#include <QGraphicsView>#include <QGraphicsScene>#include <QMouseEvent>#include <QGraphicsSceneMouseEvent>#include <QApplication>class GraphicsVie原创 2021-12-03 18:00:17 · 2386 阅读 · 0 评论 -
setCodecForLocale影响哪些函数?
当我们从程序的命令行读取参数时int main(int argc, char *argv[])当我们从往控制台输出内容时qDebug()<<QString(…)使用 QString::fromLocal8Bit() 与 QString::toLocal8Bit()QFile 传入参数文件名原创 2021-11-26 15:05:16 · 217 阅读 · 0 评论 -
QScrollBar完整的样式表
一、水平滚动条QScrollBar:horizontal { border: 2px solid grey; background: #32CC99; height: 15px; margin: 0px 20px 0 20px; } QScrollBar::handle:horizontal { background: white; min-width: 20px; } QScrollBar::add-line:hor原创 2021-10-26 16:25:49 · 4181 阅读 · 0 评论 -
Qt之根据图片计算绘制区域
QRect QStyle::itemPixmapRect(const QRect &rect, int alignment, const QPixmap &pixmap) const{ QRect result; int x, y, w, h; rect.getRect(&x, &y, &w, &h); const int pixmapWidth = pixmap.width()/pixmap.devicePixelRati原创 2021-10-26 14:10:05 · 254 阅读 · 0 评论 -
Qt之根据字符串计算绘制区域
QRect QStyle::itemTextRect(const QFontMetrics &metrics, const QRect &rect, int alignment, bool enabled, const QString &text) const{ QRect result; int x, y, w, h; rect.getRect(&x, &y, &w, &h);原创 2021-10-26 13:56:58 · 350 阅读 · 0 评论 -
基于QCustomplot实现帕累托图
什么是帕累托图?相关代码void MainWindow::setParetoDemo(QCustomPlot *customPlot){ demoName = "Bar Chart Demo"; // set dark background gradient: QLinearGradient gradient(0, 0, 0, 400); gradient.setColorAt(0, QColor(90, 90, 90)); gradient.setColorA原创 2021-10-21 14:16:03 · 235 阅读 · 0 评论 -
Qt的一些用法(21-30)
二十一、如何在Item view中设置Icon的大小。使用setIconSize 即可。int main(int argc, char *argv[]){ QApplication app(argc, argv); QTableWidget box; box.horizontalHeader()->setStretchLastSection(true); QPixmap pix(50,50); pix.fill(Qt::red); QIcon ic原创 2021-09-08 18:12:19 · 733 阅读 · 0 评论 -
Qt的一些用法(11-20)
十一、QComboBox宽度偏小,如何显示全下拉文本项。 QComboBox *combo = new QComboBox(this); combo->view()->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum); combo->addItem("Combo box entry number 1"); combo->addItem("Combo box entry number 2"原创 2021-09-07 14:13:33 · 1052 阅读 · 0 评论 -
Qt的一些用法(1-10)
一、使用插件的好处?二、跨线程调用函数?How can I invoke functions on QObjects from another thread?方法1:void QCoreApplication::postEvent(QObject *receiver, QEvent *event, int priority = Qt::NormalEventPriority)方法2:使用信号和槽函数三、如何鼠标旋转QGraphicsItem?1、GraphicsEllipseItem#ifnde原创 2021-09-06 13:51:12 · 377 阅读 · 0 评论 -
QTextEdit中跳转到指定行
TextEdit中跳转到指定行1、原理说明:首先,要得到 一个鼠标指针对象:QTextCursor tc = textCursor();然后利用QTextCursor的setPosition函数设置鼠标指针的位置。这里的position是指整个文件流的位置坐标,如何定位到行呢?以前也被这个问题困扰解决的办法是:利用QTextBlock这类。可以理解为块数据,因为文件中的Block是以换行符分割,所以可以看成是文件的一行。那么利用QTextDocument的findBlockByNumber 函数就可以得原创 2021-09-03 10:12:15 · 1841 阅读 · 0 评论 -
Qt使用技巧
1、QListWidgetQListWidgetItem使用setData、data存储、使用数据。实际上有一个QList values队列,可以按照数据类型进行存储使用原创 2021-08-12 19:08:34 · 116 阅读 · 0 评论 -
QVariant的使用
关于QVariant的使用,主要从三个方面进行说明1、QVariant支持的类型,如,int, float, QString等 QVariant var=12; int data=var.toInt();2、自定义类型,这个时候就要用到Qt的元对象系统。Adding a Q_DECLARE_METATYPE() makes the type known to all template based functions, including QVariant struct MyC原创 2021-08-02 10:32:32 · 394 阅读 · 0 评论 -
Qt3d相关参考
Qt3D相关学习参考原创 2021-06-22 13:25:58 · 94 阅读 · 0 评论 -
EGL Error : Could not create the egl surface: error = 0x3003 问题
参考1参考2原创 2021-06-21 19:32:07 · 1723 阅读 · 0 评论 -
EGLFS: OpenGL windows cannot be mixed with others 问题
参考原创 2021-06-21 19:27:25 · 1398 阅读 · 0 评论 -
Qt 测量函数运行耗时
方法一:QTimer (Windows和Linux均可)其精度为ms级#include <QTime> QTime time; time.start(); the_func_to_be_mensured(); qDebug()<<time.elapsed()/1000.0<<"s"; time.stop();//运行结果0.109s方法二:gettimeofday() (只能在Linux下)精度为us级#include <sys/tim原创 2021-06-21 13:16:45 · 1031 阅读 · 0 评论 -
execution_character_set报warning: unknown pragma ignored
环境:win10,qtcreator5.14.2-x86,vs2017由于中文乱码,参考网上文章后,在代码里添加#if defined(_MSC_VER)#pragma execution_character_set(“utf-8”)#endif后,报警告报warning: unknown pragma ignored,原来只是中文乱码问题,现在编译不过了。继续查,发现execution_character_set只在vs2015里支持,继续搜索方案,解决方法如下:在pro文件添加win32转载 2021-06-17 07:58:13 · 2888 阅读 · 0 评论 -
QTreeWidget::invisibleRootItem函数的作用
作用主要是将 top-level items and their children使用统一的方法处理,递归访问树的所有节点,递归不是从topLevelItem开始,而是从根节点开始,所有节点的类型都是QTreeWidgetItem ,可以用QTreeWidgetItem 的child方法逐层递归访问。代码 root = self.treeWidget.invisibleRootItem() count = root.childCount() for i in range(count):原创 2021-06-16 15:37:13 · 1301 阅读 · 0 评论 -
QPropertyAnimation与QTimer
使用Qt动画系统,如QPropertyAnimation做动画,相对于QTimer做动画,在性能会有缺失,不适合嵌入式系统原创 2021-06-15 10:03:20 · 223 阅读 · 0 评论 -
Qt信号槽连接,使用lambda
Qt信号槽连接,使用lambda样例 connect(ui->applyButton, &QPushButton::clicked, [this]() {#if QT_CONFIG(modbus_serialport) m_settings.parity = ui->parityCombo->currentIndex(); if (m_settings.parity > 0) m_settings.parity原创 2021-06-11 13:33:03 · 472 阅读 · 1 评论 -
Qt之繁忙等待提示
效果图实现原理QPropertyAnimation控制属性变化,QTimer也可以。用painter进行绘制。代码#ifndef BUSYWIDGET_H#define BUSYWIDGET_H#include <QGraphicsItem>class QPropertyAnimation;/** * @brief The IconLabel class * 繁忙控件 */class BusyWidget : public QGraphicsObject{原创 2021-05-14 16:11:51 · 830 阅读 · 0 评论 -
qmake中自定义编译变量的使用
qmake中自定义编译变量的使用转载 2021-05-11 12:14:47 · 1013 阅读 · 0 评论 -
Qt之高清屏显示
高清屏(HDPI)显示会带来什么问题?控件、文字、图片变小为什么会造成以上问题,由于DPI大,实际上是物理像素密度大,在物理像素和逻辑像素比(devicePixelRatio)一定的情况下(默认为1),即1个物理像素对应一个逻辑像素,这样显示时,必然会导致图片看起来小。如何解决?改变devicePixelRatio,比如设为2,即2个物理像素表示1个逻辑像素,这样就能保证UI在高清屏上显示大小正常。// QApplication::devicePixelRatio();会变2。QAppl原创 2021-05-10 12:48:03 · 810 阅读 · 0 评论 -
QIcon
QIcon的功能QIcon可以用来管理多个QPixmap,可以返回不同状态、大小的QPixmap。QIcon支持SVG格式使用QPixmap QIcon::pixmap(const QSize &size, QIcon::Mode mode = Normal, QIcon::State state = Off) const返回的QPixmap会根据实际大小去决定,不会超过实际大小。但是可以比实际大小小。Setting the Qt::AA_UseHighDpiPixmaps applic原创 2021-05-10 10:26:09 · 828 阅读 · 0 评论 -
QDockWidget之自定义标题栏
实现思路自定义一个QWidgetQDockWidget::setTitleBarWidget自定义QWidget时候注意点The title bar widget must have a valid QWidget::sizeHint() and QWidget::minimumSizeHint()不想特别处理的鼠标事件,调用QMouseEvent::ignore()要注意标题栏方向 QDockWidget *dockWidget = qobject_cast<QD原创 2021-05-08 22:59:40 · 1867 阅读 · 0 评论 -
Qt之QPointSize和QPixelSize互转问题
QFont当中有两种方式设置字体大小,PixelSize、PointSize,即像素大小和点阵大小。QPointSize实际是磅,也就是 1/72 inchQPixelSize = DPI * Point / 72什么是DPI,就是每英寸的点数,大部分显示器的DPI为90.6左右,但windows为了方便就同一了点距,为96。Ubuntu的点距也是96。字体在屏幕上的实际大小 = 字体像素大小 * 点距。一般情况用pixel,字体将不受 DPI 的影响,默认是 pointSize。相关参考.原创 2021-04-26 10:08:40 · 1976 阅读 · 0 评论 -
Qt之QTest常见的宏
QTest提供一系列宏来进行数据的通信。QBENCHMARKQBENCHMARK_ONCEQCOMPARE(actual, expected)QEXPECT_FAIL(dataIndex, comment, mode)QFAIL(message)QFETCH(type, name)QFINDTESTDATA(filename)QSKIP(description)QTEST(actual, testElement)QTEST_APPLESS_MAIN(TestClass)QTEST_GU原创 2021-04-23 16:20:10 · 792 阅读 · 0 评论 -
Qt之数据库(QSqlDatabase)
QSqlDatabase主要功能提供数据库连接使用addDatabase()建立连接 //使用QPSQL数据库驱动,打开一个默认名字的连接 QSqlDatabase db = QSqlDatabase::addDatabase("QPSQL"); db.setHostName("acidalia"); db.setDatabaseName("customdb"); db.setUserName("mojito"); db.setPassword("J0原创 2021-04-23 10:31:18 · 820 阅读 · 0 评论 -
Qt中计算椭圆、椭圆弧上点的方法
起初使用以下方法椭圆上点的方法但是遇到椭圆越扁平的时候,误差越大。什么原因?哎。果然数学是程序的灵魂。后来找到以下方法Qt根据角度计算椭圆弧上的点void qt_find_ellipse_coords(const QRectF &r, qreal angle, qreal length, QPointF* startPoint, QPointF *endPoint){ if (r.isNull()) { if原创 2021-04-23 10:03:48 · 928 阅读 · 0 评论 -
Thread-Support in Qt Modules
Threads and the SQL ModuleA connection can only be used from within the thread that created it. Moving connections between threads or creating queries from a different thread is not supported.不可以跨线程使用数据库连接Threads and Implicitly Shared ClassesWe recomme原创 2021-04-20 14:30:49 · 150 阅读 · 0 评论 -
Qt之绘制椭圆、椭圆弧上任意点
参考代码void MainWindow::paintEvent(QPaintEvent *event){ event->accept(); QPainter painter(this); painter.setPen(QPen(Qt::red,2)); //移动坐标中心点到窗口中心,默认左上角为起点,往右下为正方向 painter.translate(width()/2,height()/2); //画一个圆,圆心为起点(上一步移动到的正中),半原创 2021-04-20 11:46:54 · 2245 阅读 · 0 评论 -
Qt之QTextLayout使用
QTextLayout这个类相对更加low level API,可以用来 实现自定义的plain and rich text控件。对齐方式QTextOption op = tl.textOption();op.setAlignment(m_alignment);行间距通过设置QTextLine的y位置字间距设置 QFont的letterSpacingQTextLine参考代码 qreal y = 0; QList<QString> paragraphs;原创 2021-04-17 17:04:40 · 2130 阅读 · 0 评论 -
Qt 之字体加载管理类
代码QDir dir(QApplication::applicationDirPath() + "/fontstring"); if(dir.exists()) { qDebug() << dir.entryInfoList(); foreach(QFileInfo mfi, dir.entryInfoList()) { if(mfi.isFile()) {原创 2021-04-08 16:09:54 · 134 阅读 · 0 评论 -
Qt之QTabWidget的使用(支持动态tab)
在tabwedget添加支持关闭按钮的tab页void TabDialog::addTab(QWidget *widget, const QIcon &icon, const QString &label){ int index = _tabWidget->addTab(widget,icon, label); TabColseBtn* pbtn = new TabColseBtn(widget); _tabWidget->tabBar()->s原创 2021-04-07 20:15:35 · 1268 阅读 · 0 评论 -
Qt 之 消息机制(windows平台下)
窗口函数注册1 qt_internal_proc qeventdispatcher_win.cpp 138 0x7ffba1078f2b 10 qt_create_internal_window qeventdispatcher_win.cpp 335 0x7ffba107ca31 11 QEventDispatcherWin32::原创 2021-04-01 20:07:59 · 778 阅读 · 0 评论 -
QTcpServer之(The bound address is already in use)问题
问题每次kill掉该服务器进程并重新启动的时候,都会出现bind错误:error:98,Address already in use问题产生原因1、一般来说,一个端口释放后会等待两分钟之后才能再被使用,SO_REUSEADDR是让端口释放后立即就可以被再次使用。SO_REUSEADDR用于对TCP套接字处于TIME_WAIT状态下的socket,才可以重复绑定使用。server程序总是应该在调用bind()之前设置SO_REUSEADDR套接字选项。TCP,先调用close()的一方会进入TIME_原创 2021-03-22 11:17:54 · 1731 阅读 · 0 评论 -
QGraphicsTextItem实现行间距的原理
QTextDocument *doc;for (QTextBlock it = doc->begin(); it != doc->end(); it = it.next()){ tc.setPosition(it.position(),QTextCursor::MoveAnchor); QTextBlockFormat bfmt = it.blockFormat(); bfmt.setBottomMargin(mlinespacing); tc.setBloc原创 2021-03-14 19:36:16 · 559 阅读 · 0 评论