【发布时间】:2020-03-11 03:30:26
【问题描述】:
我编写了一个简单的代码,在 C++ 循环中从我的 QML 中读取复选框的值。但是,我总是得到“未选中”的值,即使在我用鼠标切换复选框之后也是如此。
QML:
CheckBox {
objectName: "simulatorCheckbox"
text: "text"
}
C++:
QObject *rootObject = engine.rootObjects().first();
QObject *simulatorCheckboxQ = rootObject->findChild<QObject*>("simulatorCheckbox");
if (!simulatorCheckboxQ) {
std::cout << "simulatorCheckboxQ not found" << std::endl;
std::exit(1);
}
auto consume = [&simulatorCheckboxQ]() {
while(true) {
QVariant simulatorCheckboxState = simulatorCheckboxQ->property("checkedState");
int simulatorCheckboxStateInt = simulatorCheckboxState.toInt();
if (simulatorCheckboxStateInt==Qt::Unchecked) {
std::cout << "UNchecked!" << std::endl;
} else if (simulatorCheckboxStateInt==Qt::Checked) {
std::cout << "checked!" << std::endl;
} else if (simulatorCheckboxStateInt==Qt::PartiallyChecked) {
std::cout << "PARTIALLY checked!" << std::endl;
}
//delay...
}
};
//run consume as thread
【问题讨论】:
-
为什么需要while循环?