求助:QT5+VS2012界面编程如何在一个cpp文件中调用另一个cpp文件中的变量

在QT5与VS2012结合的界面编程项目中,作者遇到一个问题:在主cpp文件中能够正确读取checkbox状态,但在自定义线程类中调用相同静态变量时值不正确。问题出现在尝试从MyThread.cpp中访问在variable.h定义的静态变量result2,其值没有如预期般为true。已提供的代码包括main.cpp、variable.h、test0303.h、test0303.cpp、MyThread.h和MyThread.cpp。
摘要由CSDN通过智能技术生成

项目描述:在VS+QT界面编程中新建了一个QT项目test0303,ui界面如下
ui界面
main.cpp文件保持默认不变,在test0303.h文件中定义了2个函数int Onbtn1()和int Onbtn2(),在test0303.cpp文件中connect了按钮和函数,并重写了上述2个函数。在该项目中新建了variable.h文件,定义了4个static变量。此外,在该项目中新建了QT5类MyThread,继承于QThread。

预计功能:当程序运行时,对checkbox1和checkbox2进行选择,点击pushbutton1,读取2个checkbox的状态,并qDebug相应的语句,接着点击pushbutton2,进入工作线程,根据2个checkbox的状态qDebug相应的语句。

具体问题:在程序中勾选checkbox1和checkbox2,在test0303.cpp中输出正常,进入MyThread.cpp文件中调用result2时,其值是false,为什么不是true呢?

代码:
main.cpp

#include "test0303.h"
#include <QtWidgets/QApplication>
int main(int argc, char *argv[])
{
 QApplication a(argc, argv);
 test0303 w;
 w.show();
 return a.exec();
}

variable.h

<
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
首先,需要安装一个PDF转Word的工具,我这里推荐使用开源软件LibreOffice。安装方法可以在其官网上找到。 然后,我们可以使用QT5来开发一个界面,让用户可以选择需要转换的PDF文件和输出的Word文件位置。具体的步骤如下: 1. 创建一个QT Widgets应用程序。 2. 在界面添加两个按钮,一个用于选择PDF文件,一个用于选择输出的Word文件位置。 3. 添加一个文本框用于显示PDF文件和输出Word文件的路径。 4. 添加一个转换按钮,点击后开始执行转换操作。 5. 通过QFileDialog类实现文件选择功能。 6. 通过QProcess类来调用LibreOffice的命令行工具进行转换。 下面是代码示例: ```cpp #include <QFileDialog> #include <QProcess> #include <QMessageBox> // 选择PDF文件 void MainWindow::on_selectPdfBtn_clicked() { QString pdfPath = QFileDialog::getOpenFileName(this, "选择PDF文件", "", "PDF文件 (*.pdf)"); ui->pdfPathTxt->setText(pdfPath); } // 选择输出Word文件位置 void MainWindow::on_selectWordBtn_clicked() { QString wordPath = QFileDialog::getSaveFileName(this, "选择输出Word文件位置", "", "Word文件 (*.docx)"); ui->wordPathTxt->setText(wordPath); } // 转换 void MainWindow::on_convertBtn_clicked() { QString pdfPath = ui->pdfPathTxt->text(); QString wordPath = ui->wordPathTxt->text(); if (pdfPath.isEmpty() || wordPath.isEmpty()) { QMessageBox::warning(this, "警告", "请选择PDF文件和输出Word文件位置"); return; } QProcess process(this); QString cmd = "libreoffice --convert-to docx \"" + pdfPath + "\" --outdir \"" + wordPath + "\""; process.start(cmd); process.waitForFinished(-1); int exitCode = process.exitCode(); if (exitCode == 0) { QMessageBox::information(this, "提示", "转换成功"); } else { QMessageBox::warning(this, "警告", "转换失败"); } } ``` 注意,在使用QProcess调用命令行工具时,需要将命令和参数用空格分隔开,并且需要将路径用双引号括起来,以避免路径有空格时发生错误。 另外,需要注意的是,LibreOffice的命令行工具可能需要在系统环境变量添加,以便在任意目录下都可以调用
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值