【问题标题】:Qt: Different tableWidget member names on workstationsQt:工作站上不同的 tableWidget 成员名称
【发布时间】:2013-09-03 12:21:59
【问题描述】:

我在两台 ubuntu 机器上使用 Qt,并且不时在它们之间复制源代码。这样做时我发现了一个非常烦人的问题,我不知道为什么会发生这种情况。

我正在使用表格小部件来显示一些数据,并希望拉伸水平标题以适应内容长度。为此,我使用以下行:

ui->tableWidget->horizontalHeader()->setResizeMode(0, QHeaderView::ResizeToContents);

这很好用。 我有一些这样的代码行。 但是,当我现在将源代码复制到另一台 PC 上进行处理时,我收到以下编译错误:

'class QHeaderView'没有名为'setResizeMode'的成员

'setResizeMode' 重命名为 'setSectionResizeMode' 可以很好地解决这个问题,但是如果我现在将源代码复制回第一台 PC,它会告诉我:

'class QHeaderView' 没有名为'setSectionResizeMode'的成员

...我必须再次将其重命名为 'setResizeMode' 才能继续工作。 我检查了两台 PC 上的 Qt 版本,它们都是基于 "Qt 5.0.1 (32 bit)""Qt Creator 2.7.0"。 系统也是最新的。 唯一的区别是,我使用的是英语系统语言中的一个,另一个是德语......但我不明白这会如何影响 Qt 的成员声明。 o.O

谁知道问题出在哪里? 随着时间的推移,不断的重命名会变得很烦人。

【问题讨论】:

  • 您能否检查每台计算机上的 qglobal 标头(或仅检查 QT_VERSION_STR 的值)是否存在差异
  • 一台机器上的版本为 4.8.4,但我现在无法检查另一台机器。大约一个小时后会报告。
  • 检查了另一台电脑。版本 5.0.1。所以,这有点奇怪。我从 APT 存储库中安装了两个 Qts,它们都告诉我它们是最新的。我也许应该从头开始在另一台机器上重新安装 Qt。谢谢你的帮助。如果需要,您可以将其发布为答案。

标签: qt member qtablewidget


【解决方案1】:

可能是 QT 标头版本不匹配

仔细检查QtCore/qglobal.h中的QT_VERSION_STR

为了快速检查您是否太懒,在代码中添加 #pragma message("QT version: " QT_VERSION_STR) 以让编译器在编译时输出它

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-09
    相关资源
    最近更新 更多