QT 使用mysql,提示 QSqlDatabasePrivate::database: requested database does not belong to the calling thread.

需求 qt 使用 mysql 的时候,提示: QSqlDatabasePrivate::database: requested database does not belong to the calling thread. 解决 使用 QSqlQuery 的时候,指明数据库连接。 int DataBaseProcess::ConnectDataBase(QSqlDatabase& db, const QString& name) { // if (db_.open()) { // return 1; // } qDebug() << "ConnectDataBase: " << name; if (QSqlDatabase::contains(name))//判断testConnect连接是否存在并连接 { db = QSqlDatabase::database(name); } else //未连接则新建数据库连接 { // QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db = QSqlDatabase::addDatabase("QMYSQL", name); db.setHostName("localhost"); // 设置数据库服务器地址 db.setPort(3306); db.setDatabaseName("ke_db"); // 设置数据库名 db.setUserName("root"); // 设置数据库用户名 db....

2023-11-15 · 1 min · 163 words · RamLife

QT 应用图标

需求 qt 需要设置应用图标替换默认的图标 解决 创建 rc 文件 项目目录新建文本文件 在文件中输入: IDI_ICON1 ICON DISCARDABLE "Icon/test1.ico" 修改文件名为: “项目名称”.rc 使用 rc 文件 项目.pro 文件中,加上 RC_FILE = IconTest.rc, 注意替换 rc 文件项目名称。 参考 Windows下QT设置应用程序(exe)图标、任务栏托盘图标、任务栏窗口图标 Qt学习之自定义修改exe应用程序图标(超简单)

2023-11-14 · 1 min · 29 words · RamLife

QT 写入 mysql 中字段为 null,并读取可能为 null 的字段

需求 使用 qt 使用 mysql 的时候,某些字段可能为 null,那么如何写入?读取时如何判断? 解决 写入 写入比较简单,明文说明是 null 即可. query.exec(QString("update rfid_match set RFID2=null where WZSFM='%1'").arg(model->item(modelReIndex,4)->text())); 读取 读取时候,需要使用 isNull 判断是否为 null。 QSqlRecord::isNull QVariant::isNull 参考 Qt中SQL语句update同时更新多字段及设置字段值为空的方法 Qt数据库SQL语句绑定方式与插入空值 C++Qt开发——操作MySQL数据库 Qt: QSqlRecord字段值为null时注意事项 Qt: QSqlRecord字段值为null时注意事项

2023-11-14 · 1 min · 33 words · RamLife

QT 打印 pdf

需求 qt 需要打印 pdf 解决 简单的打印 pdf,可以使用 QPrinter. void Printer::Print(QPrinter *printer) { qDebug() << "Printer::Print"; QPainter *pPainter = new QPainter(printer); int page_border = 30 * line_ratio_; int nPdfWidth = pPainter->viewport().width(); int nPdfHeight = pPainter->viewport().height(); qDebug() << "pdf width: " << nPdfWidth << ", height: " << nPdfHeight; //绘制标题 int y = 10 * line_ratio_; int nLineHeight = 60 * line_ratio_; y = PrintInfo(pPainter, nPdfWidth, page_border, y, nLineHeight); qDebug() << "after PrintInfo y: " << y; y += 10 * line_ratio_; pPainter->drawLine(QLineF(page_border, y + 15 * line_ratio_, nPdfWidth - page_border, y + 15 * line_ratio_)); y += 30 * line_ratio_; y = PrintImage(pPainter, nPdfWidth, page_border, y, nPdfHeight * image_ratio_); qDebug() << "after PrintImage y: " << y; y = PrintTable(pPainter, nPdfWidth, page_border, y, nLineHeight); qDebug() << "after PrintTable y: " << y; delete pPainter; } int Printer::PrintInfo(QPainter *pPainter, int nPdfWidth, int page_border, int y, int nLineHeight) { pPainter->setFont(QFont("宋体", 18, QFont::Bold)); pPainter->drawText(QRect(0, y, nPdfWidth, 100), Qt::AlignCenter, tr(organization_name_....

2023-11-13 · 2 min · 312 words · RamLife

QT 显示多图片

需求 qt 显示多张 pixmap 解决 图片多了之后,需要耗费更多的资源。 QLabel + setPixmap: 简单,但是使用 cpu 资源 drawPixmap: 直接使用 gpu 资源 QPixmap image1; image1.load(":/images/chuyin1.jpg"); void PaintWidget::paintEvent(QPaintEvent *) { //void QPainter::drawPixmap(int x, int y, int width, int height, const QPixmap &pixmap) QPainter painter(this); int x1 = ui->view1Frame->pos().x(); int y1 = ui->view1Frame->pos().y(); painter.drawPixmap(x1,y1,ui->view1Frame->width(),ui->view1Frame->height(),image1); } 参考 【Qt】使用QPainter的drawPixmap()绘制多幅图片

2023-11-13 · 1 min · 49 words · RamLife

QT chart 转 图片

需求 qt 需要把 chart 曲线转为 pixmap 解决 这个其实很简单,直接调用 api 即可。 printer_.SetPixmap(test_chart_->get_view()->grab()); pPainter->drawPixmap(image_border, y, pixmap_); QPixmap p = view->grab(); QImage image = p.toImage(); image.save("chart.png"); 参考 Qt中将QChart图像导出成图片的问题 求助求助!!!QChart 图表转到QPixmap 如何将Qt窗口的内容转化为图片?

2023-11-13 · 1 min · 28 words · RamLife

QT 使用 QTableView 和 QSqlQueryModel 配合显示数据

需求 qt 中需要从数据库中搜索数据,并在表格中显示 解决 设置 view_ = new QTableView(this); query_model_ = new QSqlQueryModel(this); selection_model_ = new QItemSelectionModel(query_model_, this); view_->setModel(query_model_); view_->setSelectionModel(selection_model_); view_->setEditTriggers(QAbstractItemView::NoEditTriggers); view_->setSelectionMode(QAbstractItemView::SingleSelection); view_->setSelectionBehavior(QAbstractItemView::SelectRows); view_->setAlternatingRowColors(true); 搜索并显示 QString query_command = "SELECT q.`flag_check`, q.`strip_id`, q.`analysis_datetime`, q.`ip`, q.`analysis_id`, qt.`name`, " "r.`type`, q.`value_fix`, q.`value_act_fix`, q.`value_cr_fix`, " "q.`reference_range`, q.`quality_no`, " "(CASE WHEN q.`flag_normal` = 0 THEN '不通过' " "WHEN q.`flag_normal` = 1 THEN '通过' " "ELSE '不通过' END), q.`device_sn` " "FROM (quality AS q inner join quality_type AS qt ON q....

2023-11-12 · 1 min · 159 words · RamLife

QT 中 QByteArray 介绍

需求 QByteArray 有哪些常用方法? 解决 访问 [], data[]: 可读可写 at(), constData[]: 只读 增删改查 append, prepend: 后加,前加 replace: 替换 remove: 删除 indexOf, lastIndexOf: 搜索 转换 hex 和 字符串互转 QByteArray text = QByteArray::fromHex("517420697320677265617421"); text.data(); // returns "Qt is great!" QByteArray ba; ba.resize(3); ba[0] = 0x30; ba[1] = 0x31; ba[2] = 0x32; qDebug() << ba.toHex(); //return "303132" 数值转字符串 int n = 63; qDebug()<<QByteArray::number(n); // returns "63" qDebug()<<QByteArray::number(n, 16); // returns "3f" qDebug()<<QByteArray::number(n, 16).toUpper(); // returns "3F" qDebug()<<QByteArray::number(n, 2); // returns "111111" qDebug()<<QByteArray::number(n, 8); // returns "77" QByteArray ba; int n = 63; ba....

2023-11-07 · 2 min · 275 words · RamLife

QT 打印当前线程

需求 qt 打印当前线程进程 解决 当前线程指针: QThread::currentThread() 当前线程: QThread::currentThreadId() 当前进程: QCoreApplication::applicationPid() 参考 QT打印当前线程地址 【Qt线程-6】获取当前线程id,thread()和currentThreadId(),不是想当然那样,不使用信号槽可能看不出区别

2023-11-06 · 1 min · 13 words · RamLife

QT 减少控件间的间隙

需求 qt 默认情况下,控件之间的间隙比较大,不好看,需要减少间隙 解决 这个其实很简单,直接调用 api 即可。 layout_->setContentsMargins(0,0,0,0); layout_->setSpacing(0); 参考 【QT】Layout布局间消除间隙(修改layout内置参数) QT 布局管理器设置控件固定大小,控件间隔 QT布局管理器不同部分比例大小设置方法

2023-11-05 · 1 min · 14 words · RamLife