#include "mainwindow.h" #include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { QPushButton *selectButton = new QPushButton("选择文件", this); connect(selectButton, &QPushButton::clicked, this, &MainWindow::selectFile); QVBoxLayout *layout = new QVBoxLayout; layout->addWidget(selectButton); QWidget *centralWidget = new QWidget(this); centralWidget->setLayout(layout); setCentralWidget(centralWidget); ui->setupUi(this); } MainWindow::~MainWindow() { delete ui; } int selectFile() { bool guideCadIntoData(QString dir);// 判断是否成功选择文件 QString dir = QFileDialog::getOpenFileName(this, "选择文件", "", "DWG Files (*.dwg)"); if (dir.isEmpty()) { qDebug() << "erro:File import failure!"; return false; } else { return true; // 进行导入操作 // ... } } }; this报错
时间: 2024-04-16 12:27:50 浏览: 90
【Qt】MainWindow窗口状态栏.rar
根据你提供的代码,问题出现在 `int selectFile()` 函数中,你在函数内部使用了 `this` 关键字。然而,在非成员函数内部不能直接使用 `this` 关键字。
要解决这个问题,你可以将 `selectFile` 函数声明为 MainWindow 类的成员函数。在你的代码中,将 `int selectFile()` 改为 `int MainWindow::selectFile()` 即可。
修正后的代码如下所示:
```cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
QPushButton *selectButton = new QPushButton("选择文件", this);
connect(selectButton, &QPushButton::clicked, this, &MainWindow::selectFile);
QVBoxLayout *layout = new QVBoxLayout;
layout->addWidget(selectButton);
QWidget *centralWidget = new QWidget(this);
centralWidget->setLayout(layout);
setCentralWidget(centralWidget);
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
int MainWindow::selectFile() // 修改函数声明为成员函数
{
bool guideCadIntoData(QString dir);// 判断是否成功选择文件
QString dir = QFileDialog::getOpenFileName(this, "选择文件", "", "DWG Files (*.dwg)");
if (dir.isEmpty()) {
qDebug() << "erro:File import failure!";
return false;
} else {
return true;
// 进行导入操作
// ...
}
}
```
通过将 `selectFile()` 函数声明为 MainWindow 类的成员函数,你就可以在函数内部使用 `this` 关键字来引用当前对象了。
阅读全文