MainWindow.cpp:26:26: Call to 'qRound' is ambiguous qglobal.h:525:29: candidate function qglobal.h:527:29: candidate function
时间: 2023-07-02 09:05:24 浏览: 72
这个错误是因为 `qRound` 函数有多个重载版本,编译器无法确定应该调用哪一个。你可以尝试显式地指定参数类型,或者使用 `static_cast` 进行强制类型转换来解决这个问题。
例如,如果你想对一个 `double` 类型的变量 `x` 进行四舍五入并转换为整型,可以这样写:
```cpp
int rounded = qRound(static_cast<qreal>(x)); // 显式指定参数类型并进行强制类型转换
```
另外,如果你使用的是 Qt 5.15 或更高版本,可以使用 `qFastRound` 函数来替代 `qRound` 函数。`qFastRound` 函数只有一个重载版本,可以避免上述错误。
相关问题
mainwindow.cpp:9:7: error: redefinition of 'MainWindow' mainwindow.h:10:7: note: previous definition is here
这个错误通常是由于在头文件和源文件中重复定义了类 `MainWindow` 导致的。
请确保 `mainwindow.h` 文件中只有类的声明,不包含类的定义。而在 `mainwindow.cpp` 文件中,包含类的定义和实现。
以下是一个修复该错误的示例:
mainwindow.h:
```cpp
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
};
#endif // MAINWINDOW_H
```
mainwindow.cpp:
```cpp
#include "mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
// 构造函数的实现
}
MainWindow::~MainWindow()
{
// 析构函数的实现
}
```
请注意,在 `mainwindow.cpp` 中,我们只包含了 `mainwindow.h` 头文件,而不是重复定义类 `MainWindow`。
这样修改后,应该就可以解决 "redefinition of 'MainWindow'" 错误了。
mainwindow.cpp:43:1: warning: control reaches end of non-void function
根据你提供的代码,编译器发出了一个警告:“控制流程到达了非 void 函数的结尾”。这是因为你的 `int MainWindow::selectFile()` 函数声明的返回类型是 `int`,但是在函数的结尾处没有返回语句。
根据你的代码逻辑,如果文件路径为空,则会打印错误消息并返回 `false`。否则,在执行导入操作之后,没有返回任何值。
要解决这个警告,你可以在函数结尾处添加一个默认的返回语句,以便处理所有可能的情况。例如,你可以在函数的最后返回一个默认值 `false`,表示导入操作失败。
以下是修正后的代码:
```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;
}
bool guideCadIntoData(QString dir); // 在 mainwindow.h 文件中进行函数声明
int MainWindow::selectFile()
{
QString dir = QFileDialog::getOpenFileName(this, "选择文件", "", "DWG Files (*.dwg)");
if (dir.isEmpty()) {
qDebug() << "error: File import failure!";
return false;
} else {
// 进行导入操作
// ...
return true;
}
return false; // 添加默认的返回语句,处理其他情况
}
```
通过在函数的结尾处添加了 `return false;`,以处理控制流程到达函数末尾的情况,解决了警告。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)