[英]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.