![](/img/trans.png)
[英]Qt for wasm: error: use of undeclared identifier 'QThreadPool'
[英]Qt qOverload - undeclared identifier
我正在尝试学习使用QComboBox ,我尝试从https://zetcode.com/gui/qt5/widgets/编译一段代码,但我总是收到相同的错误消息“使用未声明的标识符 'qOverload' ”我在网上找到了所有关于它的信息,但没有任何帮助。
我正在使用 Qt Creator 5.15 和 C++11。
combobox.h:
#pragma once
#include <QWidget>
#include <QComboBox>
#include <QLabel>
class ComboBoxEx : public QWidget {
Q_OBJECT
public:
ComboBoxEx(QWidget *parent = nullptr);
private:
QComboBox *combo;
QLabel *label;
};
combobox.cpp:
#include <QHBoxLayout>
#include "combobox.h"
ComboBoxEx::ComboBoxEx(QWidget *parent)
: QWidget(parent) {
QStringList distros = {"Arch", "Xubuntu", "Redhat", "Debian",
"Mandriva"};
auto *hbox = new QHBoxLayout(this);
combo = new QComboBox();
combo->addItems(distros);
hbox->addWidget(combo);
hbox->addSpacing(15);
label = new QLabel("Arch", this);
hbox->addWidget(label);
connect(combo, qOverload<const QString &>(&QComboBox::activated),
label, &QLabel::setText); // use of undeclared identifier 'qOverload'
}
主.cpp:
#include <QApplication>
#include "combobox.h"
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
ComboBoxEx window;
window.resize(300, 150);
window.setWindowTitle("QComboBox");
window.show();
return app.exec();
}
这是我在论坛的第一个问题。 预先感谢您的帮助。
activated(const QString &);
用消息标记QT_DEPRECATED_SINCE(5, 15)
Use textActivated() instead
,您不需要qOverload<const QString &>
用于textActivated
。 该宏也有问题 - 有时它无法编译。
我检查了 qOverload 的 qt 文档,您可能需要 C++ 14,您可能需要将其插入 your.pro 文件-> CONFIG += Z713E352B23397947B8B2890725。
更多详情请参考链接:- http://doc.qt.io/qt-5/qtglobal.html#qOverload
但是您仍然可以使用辅助方法解决此问题,因为在 c++11 中您可以使用辅助功能。 例如:-QOverload<>::of(&Foo::overloadedFunction)
您可以在文档中阅读有关它的更多信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.