如何从 GUI 写入结构



使用Qt,我试图通过来自gui的输入写入我的结构。

我的目标.h 文件:

struct Target{
    double heading;
    double speed;
};

我的CPP:

#include <target.h>
struct Target myship;
myship.heading = 0;
myship.speed = 0;

我以QDial作为标题为例。 我可以将 QDial 的值写入文本文件,但我想利用结构

我想知道的是我如何访问主窗口中的结构.cpp以便我可以写入结构?

看到我可以在主窗口中访问我的目标结构.cpp如下所示:

Target.heading

但它不会找到"myship"。我本以为我可以做到

myship.heading...

Target.myship.heading...

但两者都不起作用。 当我做目标标题时,它给了我错误

expected unqualified-id before '.' token

我的最终目标是让我的 gui(在本例中为 QDial)写入结构,然后让我的 gui (QLabel) 显示已写入的内容。 如前所述,我有读/写处理文本文件,但我目前只写出一个值,这不符合我的要求。

我是Qt和结构的新手,所以我的猜测是我错过了一些非常微不足道的东西,或者我的理解完全偏离了。

您在

定义myship变量时使用的struct前缀是 C 主义。它不属于C++。应将myship定义为:

Target myship;

此外,由于现在是 2016 年,您应该使用 C++11 必须让您的生活更轻松的所有内容。非静态/非常量类/结构成员的初始化非常有用,并且避免在使用结构时使用样板。因此,首选:

// 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;
}

请注意,您应该将自己的标头作为 #include "header.h" 包含在 ,而不是 #include <header.h> 。后者是为系统标头保留的。

没有Qt:

#include <iostream>
struct Target {
  double heading = 0.0;
  double speed = 0.0;
};
int main() {
  Target ship;
  std::cout << ship.heading << " " << ship.speed << std::endl;
}

相关内容

  • 没有找到相关文章

最新更新