如何从 GUI 写入结构
How to write to struct from a GUI
使用 Qt,我试图通过来自 gui 的输入写入我的结构。
我的target.h文件:
struct Target{
double heading;
double speed;
};
我的客户:
#include <target.h>
struct Target myship;
myship.heading = 0;
myship.speed = 0;
我使用QDial 作为标题示例。我可以将 QDial 的值写入文本文件,但我想利用结构。
我想知道的是如何访问 mainwindow.cpp 中的结构,以便我可以写入该结构?
我发现我可以像这样在 mainwindow.cpp 中访问我的 Target 结构:
Target.heading
但找不到 "myship"。我本以为我可以做到
myship.heading...
或
Target.myship.heading...
但两者都不起作用。当我做 Target.heading 它给了我错误
expected unqualified-id before '.' token
我的最终目标是让我的 gui(在本例中为 QDial)写入结构,然后让我的 gui(QLabel)显示写入的内容。如前所述,我有 read/write 使用文本文件,但我目前只写出一个值,这不符合我的要求。
我是 Qt 和一般结构的新手,所以我猜我遗漏了一些非常微不足道的东西,或者我的理解完全不正确。
您在 myship
变量定义中使用的 struct
前缀是 C-ism。它不属于 C++。您应该将 myship
定义为:
Target myship;
此外,由于现在是 2016 年,您应该使用 C++11 的所有功能来让您的生活更轻松。 non-static/non-const class/struct 成员的初始化非常有帮助并且避免了在使用结构时的样板。因此,更喜欢:
// target.h
#include <QtCore>
struct Target {
double heading = 0.0;
double speed = 0.0;
};
QDebug operator(QDebug dbg, const Target & target);
// target.cpp
#include "target.h"
QDebug operator(QDebug dbg, const Target & target) {
return dbg << target.heading << target.speed;
}
// main.cpp
#include "target.h"
#include <QtCore>
int main() {
Target ship;
qDebug() << ship;
}
请注意,您应该将自己的 headers 作为 #include "header.h"
而不是 #include <header.h>
。后者为系统保留 headers.
#include <iostream>
struct Target {
double heading = 0.0;
double speed = 0.0;
};
int main() {
Target ship;
std::cout << ship.heading << " " << ship.speed << std::endl;
}
使用 Qt,我试图通过来自 gui 的输入写入我的结构。
我的target.h文件:
struct Target{
double heading;
double speed;
};
我的客户:
#include <target.h>
struct Target myship;
myship.heading = 0;
myship.speed = 0;
我使用QDial 作为标题示例。我可以将 QDial 的值写入文本文件,但我想利用结构。
我想知道的是如何访问 mainwindow.cpp 中的结构,以便我可以写入该结构?
我发现我可以像这样在 mainwindow.cpp 中访问我的 Target 结构:
Target.heading
但找不到 "myship"。我本以为我可以做到
myship.heading...
或
Target.myship.heading...
但两者都不起作用。当我做 Target.heading 它给了我错误
expected unqualified-id before '.' token
我的最终目标是让我的 gui(在本例中为 QDial)写入结构,然后让我的 gui(QLabel)显示写入的内容。如前所述,我有 read/write 使用文本文件,但我目前只写出一个值,这不符合我的要求。
我是 Qt 和一般结构的新手,所以我猜我遗漏了一些非常微不足道的东西,或者我的理解完全不正确。
您在 myship
变量定义中使用的 struct
前缀是 C-ism。它不属于 C++。您应该将 myship
定义为:
Target myship;
此外,由于现在是 2016 年,您应该使用 C++11 的所有功能来让您的生活更轻松。 non-static/non-const class/struct 成员的初始化非常有帮助并且避免了在使用结构时的样板。因此,更喜欢:
// target.h
#include <QtCore>
struct Target {
double heading = 0.0;
double speed = 0.0;
};
QDebug operator(QDebug dbg, const Target & target);
// target.cpp
#include "target.h"
QDebug operator(QDebug dbg, const Target & target) {
return dbg << target.heading << target.speed;
}
// main.cpp
#include "target.h"
#include <QtCore>
int main() {
Target ship;
qDebug() << ship;
}
请注意,您应该将自己的 headers 作为 #include "header.h"
而不是 #include <header.h>
。后者为系统保留 headers.
#include <iostream>
struct Target {
double heading = 0.0;
double speed = 0.0;
};
int main() {
Target ship;
std::cout << ship.heading << " " << ship.speed << std::endl;
}