但是编译后显示this->setGeometry(qApp->desktop()->availableGeometry())这句话错误
时间: 2024-05-11 19:18:17 浏览: 10
这个错误看起来是因为没有包含 `QApplication` 头文件。请确保在代码文件中包含了 `QApplication` 头文件。可以使用以下语句包含头文件:
```c++
#include <QApplication>
```
如果已经包含了 `QApplication` 头文件,那么可能是因为 `qApp` 所在的上下文不正确。确保你在 `QApplication` 的上下文中使用 `qApp`,或者使用 `QDesktopWidget` 替代 `qApp`:
```c++
this->setGeometry(QDesktopWidget().availableGeometry());
```
如果你使用的是 Qt5,可以使用 `QGuiApplication` 替代 `QApplication`:
```c++
#include <QGuiApplication>
...
QGuiApplication app(argc, argv);
...
this->setGeometry(QGuiApplication::primaryScreen()->availableGeometry());
```
希望这些能够帮助你解决问题。
相关问题
layout->setGeometry
如果您在使用 `layout->setGeometry` 函数时出现了 "too many arguments to function" 的错误,可能是因为 `layout` 对象是一个 `QHBoxLayout` 类型的指针,而 `setGeometry()` 函数不是 `QHBoxLayout` 类型的成员函数,而是 `QWidget` 类型的成员函数。
因此,您应该使用 `QWidget` 对象来调用 `setGeometry()` 函数,而不是 `QHBoxLayout` 对象。您可以使用 `QWidget` 对象的 `setLayout()` 函数来设置 `QHBoxLayout` 对象,然后使用 `QWidget` 对象来调用 `setGeometry()` 函数。例如:
```cpp
QWidget *widget = new QWidget();
QHBoxLayout *layout = new QHBoxLayout(widget);
// 添加需要放置的控件
layout->addWidget(button1);
layout->addWidget(button2);
// 设置QWidget的尺寸
widget->setGeometry(0, 0, 100, 20);
```
在这个示例中,我们创建了一个 `QWidget` 对象,并将 `QHBoxLayout` 对象设置为其布局。然后,我们向 `QHBoxLayout` 中添加了两个按钮。最后,我们使用 `QWidget` 对象来调用 `setGeometry()` 函数,以将 `QWidget` 的尺寸设置为长100宽20。
请注意,当您调用 `setLayout()` 函数时,您需要将 `QWidget` 对象作为参数传递给 `QHBoxLayout` 构造函数。这将确保 `QHBoxLayout` 对象是 `QWidget` 的子类,从而确保布局的正确显示。
QLabel* nameLabel1 = new QLabel("任务種類:", newWindow); QComboBox* comboBox1 = new QComboBox(newWindow); nameLabel1->setGeometry(20, 60, 80, 30); comboBox1->setGeometry(120, 60, 160, 30); comboBox1->addItem("物料任務"); comboBox1->addItem("充電任務");, QLabel* nameLabel2 = new QLabel("任务起點:", newWindow); QLineEdit* nameLineEdit2 = new QLineEdit(newWindow); nameLabel2->setGeometry(20, 100, 80, 30); nameLineEdit2->setGeometry(120, 100, 160, 30);加判斷,儅選擇充電任務后,就沒有任務起點了
您可以使用信号槽机制来实现当选择充电任务时,任务起点输入框被禁用的效果。下面是修改后的代码示例:
```cpp
QLabel* nameLabel1 = new QLabel("任务種類:", newWindow);
QComboBox* comboBox1 = new QComboBox(newWindow);
nameLabel1->setGeometry(20, 60, 80, 30);
comboBox1->setGeometry(120, 60, 160, 30);
comboBox1->addItem("物料任務");
comboBox1->addItem("充電任務");
QLabel* nameLabel2 = new QLabel("任务起點:", newWindow);
QLineEdit* nameLineEdit2 = new QLineEdit(newWindow);
nameLabel2->setGeometry(20, 100, 80, 30);
nameLineEdit2->setGeometry(120, 100, 160, 30);
// 连接信号槽
QObject::connect(comboBox1, QOverload<int>::of(&QComboBox::currentIndexChanged), [=](int index){
if(index == 1) { // 当选择充电任务时
nameLineEdit2->setEnabled(false); // 禁用任务起点输入框
} else {
nameLineEdit2->setEnabled(true); // 启用任务起点输入框
}
});
```
这样,当选择充电任务时,任务起点输入框将被禁用;选择其他任务类型时,任务起点输入框将保持可用。您可以根据需要进行相应的调整和修改。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.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)