【6-1】QT教程及问题集
QT的常见问题。安装部署的操作等
大黑山修道
这个作者很懒,什么都没留下…
展开
-
【PyQt5】py文件打包exe文件(将图片资源打包成一个exe文件)
这里写目录标题1. 下载pyinstaller2. 软件打包2.1 py文件直接打包2.2 pyinstaller根据.spec文件打包2.3 将图像资源打包进入exe文件2.3.1 修改py文件部分源码:2.3.2 直接打包py文件2.3.3 修改 .spec的文件2.3.4 根据 .spec文件重新打包1. 下载pyinstallerpip install pyinstaller2. 软件打包2.1 py文件直接打包pyinstaller [参数] [要打包的主程序.py]参数:-F,原创 2021-04-23 14:56:55 · 1864 阅读 · 1 评论 -
【QT】弹出标准文件打开保存框(QFileDialog::getOpenFileName)
// 弹出标准文件打开框,选择txt类型的文件,并存储文件路径QString fileName = QFileDialog::getOpenFileName(this, tr("open file"), " ", tr("txt(*.txt);;Allfile(*.*)"));// 打开文件QFile file(fileName);if(!file.open(QIODevice::ReadOnly|QIODevice::Text)){ QMessageBox::information(thi原创 2021-04-12 10:04:34 · 1417 阅读 · 0 评论 -
Windows 下 pycharm 安装 pyqt5
本人安装是在anaconda的虚拟环境中安装的。不同之处自行修改。下载 PyQt5 ,PyQt5-toolspip install PyQt5 -i https://pypi.douban.com/simplepip install PyQt5-tools -i https://pypi.douban.com/simple2. Create Tool 添加Qt Designer 和PyUICQt Designer:就是QT的ui设计界面PyUIC:就是将Qt Designer设计出的ui原创 2021-04-11 20:35:27 · 516 阅读 · 0 评论 -
【QT】QTableWidget 去除序号列
ui->tableWidget->verticalHeader()->setHidden(true);原创 2021-02-24 16:01:07 · 7733 阅读 · 2 评论 -
【QT】QTableWidget 获取当前行内容,判断QTableWidget是否被点击
QList<QTableWidgetItem*> items = ui->tableWidget_left->selectedItems();if(!items.empty()) //表格有某行被选中{ //获取该行的成员数 int count = items.count(); // 获取该行的行号 int rowindex = ui->tableWidget_left->row(items.at(0)); // 打印该行所有成员内容 for(int i原创 2021-02-24 18:00:56 · 5443 阅读 · 0 评论 -
【QT】 QTableWidget表格鼠标点击事件信号
QTableWidget单元格点击信号槽// 返回鼠标单击的所在单元格的row和colconnect(ui->tableWidget,SIGNAL(cellClicked(int,int)),this,SLOT(show_prodcut_sets(int,int)));void PageProductInfo::show_prodcut_sets(int row,int col){33 qDebug() << "所点击的单元格的row=" << row <&l原创 2021-02-26 14:01:13 · 15601 阅读 · 0 评论 -
【QT】QTableWidget 获取指定行与列的单元格数据QTableWidgetItem
// 去表格三行五列的单元格的数据int row = 3;int column = 5;QTableWidgetItem* item = ui->tableWidget_right->item(row,column);qDebug() << item->Text();原创 2021-02-26 14:38:24 · 19186 阅读 · 0 评论 -
【QT】QTableWidget遍历所有单元格
遍历表格QTableWidget中所有单元格:for(int row=0; row<ui->tableWidget->rowCount(); row++){ for(int col=0; col<ui->tableWidget->columnCount(); col++) { QTableWidgetItem* item = ui->tableWidget_right->item(row,col); }}...原创 2021-02-26 15:06:02 · 3831 阅读 · 0 评论 -
【QT】 QTableWidget 表头设计
//表头标题用QStringList来表示QStringList headerText2;headerText2<<"选择"<<"序号"<<"产品型号"<<"图号"<<"名称"<< "生产令号" << "批次号" << "备注"; ui->tableWidget->setColumnCount(headerText2.count());//列数设置为与 headerText的行数相等ui-&原创 2021-02-26 15:53:05 · 2868 阅读 · 0 评论 -
【QT】 QTableWidget 表格无法添加新单元格的可能原因
需要先设置好行数// 先设置好表格的总行数int rowsize = 10;ui->tableWidget->setRowCount(rowsize);//总行数然后就可以正常添加单元格了for(int row=0; row<ui->tableWidget->rowCount(); row++){ QTableWidgetItem *item_a= new QTableWidgetItem ("a"); QTableWidgetItem *item_b原创 2021-02-26 16:40:04 · 1096 阅读 · 0 评论 -
【QT】QTableWidget 表格中按钮槽函数 获取表格该按钮所在的行号信息
需求是这样的,在表格中添加了按钮,通过信号槽会进行按钮点击事件。但表格中按钮的操作往往都会和该行的行号相关,一下是获取行号的方法。// 按钮点击的信号槽,正常是不会传递行号参数的 connect(btn_edit,SIGNAL(clicked()),this,SLOT(create_editWidget()));// 槽函数void PageUserSystem::page_userSystem_userAdmin_create_editWidget(){ // 获取按钮的指针 .原创 2021-02-26 17:50:08 · 5818 阅读 · 13 评论 -
【QT】QTableWidget在表格单元格内添加多个控件,并调整好控件的布局
向表格中单元格内添加控件:最简单的方式// 创建按钮QPushButton *btn_edit = new QPushButton("编辑");// 向单元格内添加按钮原创 2021-02-26 17:32:45 · 12187 阅读 · 18 评论 -
【QT】QTableWidget 详解
void PageProductInfo::create_info_table() // 绘制产品信息表格{ // 先清空原表格 ui->tableWidget_left->clear(); //设置表头 QTableWidgetItem *headerItem; QStringList headerText; headerText<<"选择"<<"序号"<<"产品型号"<<"图号"<.原创 2021-02-26 17:53:55 · 1982 阅读 · 1 评论 -
【QT】 QLineEdit 只能输入字母或数字,输入格式约束(正则表达式)
1.只允许输入整型ui->lineEdit->setValidator(new QIntValidator(ui->lineEdit));2.只允许输入数字ui->lineEdit->setValidator(new QRegExpValidator(QRegExp("[0-9]+$"))); 3.只能输入字母和数字ui->lineEdit->setValidator(new QRegExpValidator(QRegExp("[a-zA-Z0-9原创 2021-03-14 20:06:47 · 30150 阅读 · 11 评论 -
【PyQt5】问题解决:super-class __init__() of type file_func_widget was never called
原先错误:class file_func_widget(QWidget): def __init__(self): self.font = QFont() self.font.setFamily("黑体") self.font.setBold(1) # 设置为粗体 self.font.setPixelSize(24) # 字体大小然后查了一下需要增加一行代码就可以了:class file_func_widget(QWidge原创 2021-03-21 17:43:26 · 5936 阅读 · 0 评论 -
【QT报错】C2001常量中有换行符(WinGW代码在MSVC运行)
解决方式:1.工具->选项->文本编辑器->行为:2.在相关文件里添加:#pragma execution_character_set("utf-8")原创 2021-01-20 13:48:22 · 204 阅读 · 0 评论 -
【QT】绘制饼状图 QPieSeries
相关链接:QT绘制直方图BarChartQT绘制折线图LineChartQT绘制曲线图SplineChartQT绘制散点图ScatterChartQT绘制散点图AreaChart0.创建ui窗口:主要就是拖拉一个Horizontal Layout1.创建Qchart对象:QChart *chart = new QChart();chart->setTitle("饼状图演示图"); //设置表格标题2.创建QPieSeries对象:QPieSeries *series =原创 2021-01-20 15:13:15 · 5883 阅读 · 2 评论 -
【QT】绘制直方图 QBarSeries
相关链接:QT绘制饼状图PieChartQT绘制折线图LineChartQT绘制曲线图SplineChartQT绘制散点图ScatterChartQT绘制散点图AreaChart0.创建ui窗口:主要就是拖拉一个Horizontal Layout1.创建Qchart对象:QChart *chart = new QChart();chart->setTitle("柱状图演示"); //设置表格标题2.创建QBarSet对象:QBarSet *set0 = new QBarS原创 2021-01-20 15:56:35 · 6870 阅读 · 3 评论 -
【QT】绘制折线图 QLineSeries
相关链接:QT绘制直方图BarChartQT绘制折线图LineChartQT绘制曲线图SplineChartQT绘制散点图ScatterChartQT绘制散点图AreaChart0.创建ui窗口:主要就是拖拉一个Horizontal Layout1.创建Qchart对象:QChart *chart = new QChart();chart->setTitle("折线图图演示"); //设置表格标题2.创建QLineSeries对象:QLineSeries *series原创 2021-01-20 16:32:23 · 4446 阅读 · 2 评论 -
【QT】绘制曲线图 QSplineSeries
相关链接:QT绘制直方图BarChartQT绘制饼状图PieChartQT绘制折线图LineChartQT绘制散点图ScatterChartQT绘制面积图AreaChart0.创建ui窗口:主要就是拖拉一个Horizontal Layout1.创建Qchart对象:QChart *chart = new QChart();chart->setTitle("折线图图演示"); //设置表格标题2.创建QSplineSeries对象:QSplineSeries *serie原创 2021-01-20 16:48:32 · 5420 阅读 · 0 评论 -
【QT】绘制散点图QScatterSeries
相关链接:QT绘制直方图BarChartQT绘制饼状图PieChartQT绘制曲线图SplineChartQT绘制折线图LineChartQT绘制面积图AreaChart0.创建ui窗口:主要就是拖拉一个Horizontal Layout1.创建Qchart对象:QChart *chart = new QChart();chart->setTitle("折线图图演示"); //设置表格标题2.创建QScatterSeries对象:QScatterSeries *scat原创 2021-01-20 17:06:33 · 11297 阅读 · 0 评论 -
【QT】绘制面积图 QAreaSeries
相关链接:QT绘制直方图BarChartQT绘制饼状图PieChartQT绘制曲线图SplineChartQT绘制散点图ScatterChartQT绘制面积图AreaChart0.创建ui窗口:主要就是拖拉一个Horizontal Layout1.创建Qchart对象:QChart *chart = new QChart();chart->setTitle("面积图演示"); //设置表格标题2.创建QLineSeries对象:QLineSeries *series1 =原创 2021-01-20 17:21:39 · 2292 阅读 · 0 评论 -
【QT】在布局中增加addWidget和清除removeWidget控件
1.在布局中增加控件:ui->verticalLayout->addWidget(chartView);2.在布局中清除控件:// 删除布局中所有的控件while(ui->verticalLayout->count()){ QWidget *p=this->ui->verticalLayout->itemAt(0)->widget(); p->setParent (NULL); this->ui->v原创 2021-01-20 17:47:30 · 6011 阅读 · 1 评论 -
【QT】主页面全屏显示(根据显示屏分辨率调整主页面尺寸)
mainwindow.h#include <QDesktopWidget>#include <QMainWindow>mainwindow.cppMainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow){ ui->setupUi(this); QDesktopWidget dw; int w=dw.width()*1;原创 2021-01-25 11:11:46 · 2631 阅读 · 0 评论 -
【QT】 主页面上如何创建分页(Stacked Widget)
1.ui界面设计拖到控件Stacked Widgetui界面上,作为分页窗口,即在该窗口上可以闪现多页面切换。然后再创建一系列按钮控件用来控制切换界面:Stacked Widget的左上角的三角可以前后切换界面,默认有两个页面;在控件内鼠标右击可以看到插入页的选项插入页面;演示程序中:Stacked Widget设计了三个页面,每个页面上显示一行话,并设计了三个按钮控制;2.代码部分mainwindow.h#ifndef MAINWINDOW_H#define MAINWINDOW_原创 2021-01-25 11:53:40 · 3914 阅读 · 2 评论 -
【QT】Layout布局间消除间隙(修改layout内置参数)
1.问题描述:在设计布局时,为了绘制出边框效果,使用了Frame或者GroupBox布局,内部的控件使用Layout水平布局或者垂直布局,然后全局针对Frame进行了垂直布局,最后栅格化布局简单演示:很显然存在两个问题:1.Frame与Frame之间存在间隙2.Frame内各个控件存在间隙然后我的目的是为了消除这个间隙2.解决方式,修改Layout参数:我们先选中Frame框架控件:修改下方的Layout相关参数;先解释一下各个参数layoutLeftMargin: layout原创 2021-01-26 13:25:32 · 15583 阅读 · 8 评论 -
QT(5.14.2) 安装mysql驱动详细流程
环境介绍:windows10QT5.14.2 编译器MingGW64-bit数据库:mysql-8.0.23-winx641.下载mysqlhttps://dev.mysql.com/downloads/mysql/2.拷贝libmysql.dll将mysql/lib内的动态库文件libmysql.dll复制,拷贝到Qt5.14.2/5.14.2/mingw73_64/bin的文件夹内3.检查mysql驱动检查QT目录中Qt5.14.2/5.14.2/mingw73_64/plug原创 2021-02-02 14:52:24 · 13586 阅读 · 34 评论 -
【QT报错】QSqlDatabase: QMYSQL driver not loaded
mysql没有成功驱动。具体原因可以根据以下一一排除:1.mysql 的位数与QT的位数不统一;如mysql64位,QT32位。自己检查一下。2.mysql的头文件和文件路径没有加入到项目的pro文件中:3.QT没有配置mysql驱动3.1检查QT是否安装完sql组件若报错则说明QT在安装时没有选中sql组件,重新安装即可;3.2 检查是否有qsqlmysql.dll参考路径:C:\Qt\Qt5.14.2\5.14.2\mingw73_64\plugins\sqldrivers显然Q原创 2021-02-02 14:53:57 · 679 阅读 · 0 评论 -
【QT报错】 Error:Not a signal or slot declaration
然后,槽函数定义和实现并没有问题:后来查阅资料了解到,问题出现在这里:我在public slots下还定义了一个成员变量,造成错误。正确方式就是将成员变量放到public slots之前即可:原创 2021-02-08 09:41:29 · 3627 阅读 · 0 评论 -
【QT报错】 member access into incomplete type ‘QScrollBar‘
添加相应的头文件即可。#include <QScrollBar>原创 2021-02-19 13:48:34 · 1467 阅读 · 1 评论 -
ubuntu QT部署opencv
1.ubuntu 安装opencvubuntu 16.04 安装opencv4.2.0+opencv_contrib+CUDA支持 流程2.QT pro文件修改:目前是opencv4,以实际安装版本为准;可根据自己根目录实际情况修改路径INCLUDEPATH += /usr/local/include \ /usr/local/include/opencv4 \ /usr/local/include/opencv4/opencv2原创 2020-09-08 19:00:51 · 285 阅读 · 1 评论 -
QT信号槽,槽函数没有反应问题解决:
导致的问题很多,总结一下;1.主线程处于死循环中开了很多线程,主线程一直处于循环等待子线程的结果,但主线程进入死循环后connect信号槽机制没有应答;源代码://连接信号槽 connect(m_vec_thread[0],SIGNAL(test_signal()),this,SLOT(test_slot()));//主线程进入无限等待的死循环while(1){ ······}解决方案:使用qApp->processEvents();#include <QCoreAp原创 2020-09-11 09:59:13 · 9397 阅读 · 3 评论 -
【QT】表格操作QTableView详解
1.创建:ui界面拖拉创建在mainwindow.ui页面上找到Table View控件:然后拖拉到指定位置2.定义表格的格式头文件:#include <QTableView>#include <QStandardItemModel>model(表格格式)定义为10行2列QStandardItemModel* model = new QStandardItemModel(10,2); 给model 设置表头:QStringList labels = QObj原创 2020-10-29 22:01:47 · 7654 阅读 · 1 评论 -
【QT】QRadioButton 单选框 操作详解
1. ui界面拖拉创建Radio Button控件2. 单选框操作详解头文件:#include <QButtonGroup>创建按钮组:QButtonGroup *m_btnGroup1 = new QButtonGroup;将按钮控件Radio Button添加到按钮组QButtonGroupaddButton(控件指针,按钮组ID)m_btnGroup1->addButton(ui->radioButton1,0);m_btnGroup1->addB原创 2020-10-30 09:45:00 · 10818 阅读 · 1 评论 -
【QT】QLineEdit 各类操作详解
大纲:1.ui控件拖拉创建QLineEdit控件:2.设置QLineEdit控件的大小和位置3.设置QLineEdit控件不可修改4.设置QLineEdit控件输入的字体样式和大小5. 为QLineEdit控件的内容赋值6.获取QLineEdit控件的内容7.在QLineEdit控件输入时显示密码文1.ui控件拖拉创建QLineEdit控件:2.设置QLineEdit控件的大小和位置setGeometry(int x, int y, int width, int height)// (x,y)为控原创 2020-11-02 10:32:43 · 23982 阅读 · 3 评论 -
QT 无法解析的外部符号 __imp_connect,该符号在函数 “void __cdecl tcp_loop(void)“
缺少链接:ws2_32在QT链接添加ws2_32.lib路径即可;全盘搜索,若没有可在网上自己下载原创 2020-07-13 14:03:21 · 796 阅读 · 1 评论 -
QT 相对路径书写,以及注意事项
涉及到软件发布和移植时,会把需要的文件打包,这时候需要把一些绝对路径写为相对路径;方式:和控制台的写法一样,./表示当前目录,../表示上一级目录例如:"../0703demo/names/coco.names"有时候写相对路径会报错:比如:需要打开cfg文件中的文件,可能会写成这样:./cfg/yolov3.cfg然后就会报错:找不到yolov3.cfg文件实际上并不是写法的问题,而是执行文件是以编译的build文件夹为主目录;因此相对路径需要改为../0703demo/cfg/y原创 2020-07-13 17:04:55 · 7034 阅读 · 6 评论 -
QT 界面图像循环更新陷入卡死状态解决方式
有时候需要处理一些跟界面无关的但非常耗时的事情,这些事情跟界面在同一个线程中,由于时间太长,导致界面无法响应,处于“假死”状态。在这种情况下,有一种方法是使用多线程,即在子线程中处理文件保存,主线程负责界面相关。而如果不想使用多线程,最简单的办法就是在文件保存过程中频繁调用QApplication::processEvents()。添加:QCoreApplication::processEvents();作用:让程序处理那些还没有处理的事件,然后再把使用权返回给调用者。例如: while(原创 2020-07-14 12:29:29 · 3346 阅读 · 0 评论 -
QT Creator Win10无法打开包括文件: “corecrt.h”: No such file or directory”
原因windows Kit更新后出现多个版本,正在使用的版本没有ucrt目录默认路径:C:\Program Files (x86)\Windows Kits\10\Lib方法1:在.pro文件下添加其他kit版本的路径,例如:INCLUDEPATH += $$quote(C:/Program Files (x86)/Windows Kits/10/Include/10.0.10240.0/ucrt) \LIBS +=-L$$quote(C:/Program Files (x86)/Windows原创 2020-07-16 16:47:29 · 1978 阅读 · 2 评论 -
QT界面控件中文出现乱码
方法1:采用QString::fromLocal8Bit的方式例如:QMenu* pMenuB = new QMenu(QString::fromLocal8Bit("功能(&Function)"));方法2:采用QStringLiteral的方式例如:QMessageBox::information( this, QStringLiteral("提示"),QStringLiteral("是否确定退出程序?"), QStringLiteral("是"), QStringLiter原创 2020-07-21 16:07:13 · 802 阅读 · 1 评论