- 博客(45)
- 收藏
- 关注
原创 C++调用C#函数
class Program{ public delegate int dele_async(int a); static void Main(string[] args) { dele_async dele_method = new dele_async(Executefunc); //委托方法实例化以后有Invoke和BeginInvoke方法,Invoke是同步调用,BeginInvoke是异步等待。 //int result.
2022-05-06 17:15:18
131
原创 QAxObject清除excel进程的方法
1.直接在主线程中使用,不要使用多线程2.多线程中使用:1.使用局部变量,程序会自动释放//多线程必须初始化CoInitializeEx(NULL, COINIT_MULTITHREADED);QAxObject excel("Excel.Application");//使用局部变量,程序执行完会自动释放资源。任务管理器中将不会存在Excel进程QAxObject *work_books = excel.querySubObject("WorkBooks");work...
2022-03-16 15:03:08
1163
原创 QAxObject合并单元格
...QAxObject *sheet = workbook->querySubObject("ActiveSheet"); //指向当前活动表格...//设置单元格范围,合并单元格QAxObject *range=sheet->querySubObject("Range(const Qvariant&)", QVariant("=(A1: D1)"));range->setProperty("VerticalAlignment", -4108);//xlCent.
2022-03-15 15:34:17
973
原创 Qt显示调用dll库失败
原因:cpp 导出函数时改造了函数名,如果在前面加上 extern c"" ,就不会改造函数名。#include "dll_global.h"class DLLSHARED_EXPORT DLL{public: DLL();};extern "C" DLLSHARED_EXPORT int add(int a,int b);#include "dll.h"DLL::DLL(){}int add(int a,int b){ return a+b;
2022-03-09 20:04:22
1425
原创 qt数据库连接
1.前提条件:vs版本,qt插件必须是配套的(比如qt两个插件必须是2015版本的)程序编译的位数,qt的位数,数据库位数必须一致环境必须严格配对,32位和64位必须一致2.从MySQL安装目录中找出libmysql.dll放到qt的bin目录下无需编译mysql.pro,除非是低版本的qt...
2022-03-04 18:15:48
696
原创 Qthread
m_thread=new QThread;m_objThread=new MyThread;m_objThread->moveToThread(m_thread);connect(ui->btn_add,&QPushButton::clicked,m_objThread,&MyThread::slot_add,Qt::DirectConnection);m_thread->start();主线程Id 0x3500MyThread的线程Id 0x3500.
2021-09-13 11:02:41
210
原创 多线程使用场景
1.程序开启时,可以创建一个读线程去读数据2.网络通信时,可以创建读写线程去收发指令3.程序中出现密集型运算时,可以单独创建线程处理4.前后端分离时,可以创建一个线程去处理数据5.多任务时,可以采用多线程...
2021-09-09 14:50:21
829
原创 Qt信号槽注意事项
1.connect内部的信号槽可以有参数类型,但是不能带参数。connect(a,&A::set(QString),b,&B::get(QString));2.注意信号槽和调用信号槽的顺序。3.信号槽只能绑定一次。建议将信号槽放到类的初始化方法中。...
2021-08-21 11:00:28
256
原创 moveToThread创建并开启多线程
#ifndef READFILE_H#define READFILE_H#include <QtGui/QMainWindow>#include "ui_readfile.h"#include "DataFile.h"#include <QThread>class ReadFile : public QMainWindow{ Q_OBJECTpublic: ReadFile(QWidget *parent = 0, Qt::WFlags flags = 0.
2020-11-12 16:18:23
353
2
原创 QT右键菜单无响应
ui.treeWidget->setContextMenuPolicy(Qt::CustomContextMenu);看看是否漏写了这句代码。
2020-11-01 11:45:42
1082
1
原创 qt上下翻页问题
#ifndef SWITCHPAGE_H#define SWITCHPAGE_H#include <QtGui/QMainWindow>#include "ui_switchpage.h"#include <QList>class switchPage : public QMainWindow{ Q_OBJECTpublic: switchPage(QWidget *parent = 0, Qt::WFlags flags = 0); ~switchPag.
2020-10-16 10:20:29
744
原创 Qt全屏
if(ui->frame->isFullScreen()){ ui->frame->setWindowFlags(Qt::SubWindow); ui->frame->showNormal();}else{ ui->frame->setWindowFlags(Qt::Window); ui->frame->showFullScreen();}以上为主要代码。如果有退出全屏后部件成为一个独立的窗口.
2020-08-03 10:11:01
269
原创 Qt控件长度为100,宽度为30
问题产生原因:界面未初始化,所有控件长宽暂时未固定,所有控件长度固定为100,宽度固定为30。部分控件大小可能就是100,30.这就造成部分控件大小不匹配问题解决方法:方法1.等待界面完全初始化后再去设置所选控件大小方法2.使用布局,在布局中加入该控件,控件大小由布局决定...
2020-07-23 15:40:19
2642
1
原创 VMware问题
1.VMware提示以独占方式锁定此文件失败。另一个正在运行的vmware进程可能正在使用配置文件win+r键进入运行,输入MSConfig,再点击服务。禁用除Microsoft之外的所有服务,然后应用。重启后,再用同样的方式打开所有的服务。2.该虚拟机正在使用中,请获得所有权将该虚拟机磁盘文件所在的文件夹中的后缀名为.lck的文件夹继续加上.backup...
2020-07-15 11:02:05
219
原创 QInputDialog以及QMessageBox设置按钮为中文
QInputDialogQInputDialog* inputDialog=new QInputDialog(this);inputDialog->setWindowTitle("提示");inputDialog->setLabelText("姓名:");inputDialog->setOkButtonText("确定");inputDialog->setCancelButtonText("取消");bool ok;if(inputDialog->exec()
2020-06-29 11:24:24
2019
2
原创 解决QLineEdit闪烁
1.自定义搜索框2.使用QPixmap贴图或者直接设置border-image皆可3.弄好后会发现鼠标进出编辑框,会闪光。解决:设置border:none即可。
2020-06-19 16:07:23
859
原创 QTreeWidget------每次更新会自动定位到上次的节点位置上
目前试过十余种方法:1.ui.treeWidget->expand(QModelIndex)ui.treeWidget->selectionModel->selectedIndex();结果:失败。QModelIndex始终为0,02.targetItem=originitem->clone()ui.treeWidget->expand(QWidgetItem)结果:失败。treeWidgetItem居然是拖家带口的,无论=,还是clone都没法让新的i
2020-06-04 14:08:07
1482
原创 VS2008打包发布exe程序
1.新建项目2.项目输出3.保存。4.在保存的路径中会发现EXE文件。打开会发现遇到缺少Qtcored4.dll等等错误。解决方法:将该EXE文件复制到qt的安装文件夹/bin中,再度运行即可。
2020-05-28 11:14:56
1294
2
原创 Qt信号槽连接失效
1.在connect(a,SIGNAL(int a,int b),this,slot(int a,int b))信号槽中加入了形参2.将槽函数放在普通函数声明中了3.使用了自定义的类型,如类,list等等解决:首先注册,加入头文件#include <QMetaType>;qRegisterMetaType<QList<QString> > ("QList<double>");(connect之前注册)...
2020-05-17 17:04:52
877
原创 QTableWidget信号itemChanged
使用过itemchanged信号的肯定知道,即使没有对表格中的内容进行修改也会发送itemChanged信号,如果在循环判断语句中出现,那可能会造成死循环。对此只有使用间接的方法:首先创建一个标志flag为false。然后在ItemDoubleClicked信号槽中将此置为true,这样就说明已经对表格进行修改了,接着在itemChanged信号槽中对flag进行判断,false则返回,true则继续执行。当然这也是借鉴了别人的想法。...
2020-05-11 16:50:19
11342
2
原创 QTableWidget无法获取表格值
有两个原因:1.QTableWidgetItem *item = new QTableWidgetItem(str);//每个单元格的值都要单独申请new2.不能使用itemAt((row,column)),那样的话只会取到第一行第一列的数据。应该使用item(row,column)。...
2020-04-28 10:25:37
713
原创 秒转时间
int tempOnlineTime=3697485;int oneHour=60*60;int oneMinute=60;int coverHour=tempOnlineTime/oneHour;//时int coverMinute=tempOnlineTime%coverHour/oneMinute;//分int coverSecond=tempOnlineTime%cover...
2020-04-19 14:29:12
159
原创 如何将网格布局中的内容放置到指定位置Qt
怎么将1---->A2---->B3---->C4---->D如果直接将1234用网格布局,肯定会在中间显示。所以需要设置两个属性即Qt::AlignLeft|Qt::AlignTop和setStretch()代码如下QGridLayout* grid1=new QGridLayout(this);QGridLayout* grid2=n...
2020-04-13 12:21:47
907
原创 Qt之tcp实现获取服务器端数据并实时显示在客户端
任务:在客户端发送消息到服务器端,然后获取服务器端数据并解析返回客户端以列表形式显示。1.首先连接服务器2.点击添加按钮,使用信号槽发送消息,比如socket.write()函数等等3.接收到数据,再将该数据交给专门的函数去处理。不要想着在按钮事件中处理,那不可能实现,因为按钮事件和消息发送时同时的,等到按钮事件执行完,可能还没有收到消息,更别说去处理返回的消息了。4.每点击一次添...
2020-04-03 16:49:57
4226
1
原创 hjson第三方库的简单使用
void className::write(*data){ Json::Value Element1; Json::Value Element2; QFile file("test.json"); if(!file.open(QFile::WriteOnly|QFile::Truncate)) return; //处理数据Element2["Name"] = HCo...
2020-03-31 17:19:49
623
原创 如何在dialog对象初始化完之后还能设置dialog中的内容
1.在widget类中初始化一个dialogm_wDialog=new xDialog(this);2.在dialog类中创建一个QLabel对象,用于接收该dialog界面中的QLabel控件QLabel* m_dlabel=ui.label;3.然后在widget类中设置dialog类中的内容m_wDialog->label->setText("content"...
2020-03-18 15:44:23
296
原创 Qt界面控件设置异常:0xC0000005: 读取位置 0xcdcdcdd1 时发生访问冲突
.exe 中的 0x7a97a5ea 处最可能的异常: 0xC0000005: 读取位置 0xcdcdcdd1 时发生访问冲突:可能的原因:将ui.控件名写到ui.setupUi(this);前面去了。ui.btn->setText(QString("用户名"));........//中间代码段ui.setupUi(this);如果写到前面就会发生0xC0000005: 读...
2020-03-18 14:16:43
5820
原创 QSS之border-radius失效
如果这样写是错误的:border-bottom-radius:6px;//如果只想写这一句代码就要实现底部圆角会无效必须要分开写:border-bottom-left-radius:6px;border-bottom-right-radius:6px;...
2020-03-17 17:53:49
1262
原创 QT自定义标题框以及设计窗口四周圆角
基本思路:创建一个widget,加入QLabel控件和QPushBtton控件即可。1.创建自定义标题框类titleWidget类,在UI设计师界面拖拽出以下图形2.实现窗口关闭connect(ui.btnClose,SIGNAL(clicked()),this,SLOT(windowClose()));void className::windowClose(){ QWidg...
2020-03-16 16:21:38
1091
1
原创 Qt设置样式(qtableview)
1.在代码特定位置插入样式:this->setStyleSheet( "QPushButton#btn_one,QPushButton#btn_two{ background-color:yellow;//设置背景色 font-family:SimSun;//设置字体 color:black;//设...
2020-03-15 11:01:21
5199
原创 Linux和Windows实现文件夹共享
实现共享共享共有三种方式:1.SSHD2.Samba服务3.安装VMtools其中VMtools最简单,步骤:1.选择打开的虚拟机,右击属性---->设置------>选项------>共享文件夹(此时共享文件夹不能使用)2.接着选择VMware上方的虚拟机选项------>安装VMware Tools(T)...------->3.切换成...
2020-03-01 17:18:12
477
原创 qt下载地址
qt5.4各版本下载地址http://download.qt-project.org/archive/qt/5.4/5.4.0/Qt VS开发插件下载地址:http://download.qt.io/archive/vsaddin/
2020-02-22 11:47:51
278
原创 如何在窗口的画布上画图
任务:指定当前窗口作为画板,在画板上面铺上一张画布,然后在画布上继续画线。也就是重叠画。//painter1画出画布,painter2画线QPainter painter1(this);QRect rect(0,0,this->width(),this->height());QPixmap pix(rect.width(),rect.height());pix.fill(...
2019-12-04 15:36:33
860
原创 如何获取QTableWidget、QListWidget选中行的行号
foreach(QModelIndex index,ui->tableWidget->selectionModel()->selectedIndexes()){ qDebug()<<"index.row()"<<index.row();}注意:选中行后可以采取点击任意按钮的方式获取选中行。比如选中一些行,然后点击确定按钮。在确定按钮...
2019-11-20 10:30:56
8822
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人