【问题标题】:QT error in connecting passing a QString element连接传递 QString 元素时出现 QT 错误
【发布时间】:2014-05-03 22:53:56
【问题描述】:

我正在关注其他问题中发布的一些代码,关于如何通过信号和插槽连接父母和远方孩子之间的状态栏。

MainWindow::MainWindow(QWidget *parent) :
  QMainWindow(parent)
{
...
connect(myCanvas,SIGNAL(mouseMoved(QString)),
        this,slot(setStatusBar(QString)));
...
}

在 MainWindow 类的某处,以下内容被声明为公共插槽:

void MainWindow::setStatusBarText(const QString& text) {
statusBar()->showMessage(text);
}

在myCanvas所属的类中声明信号:

signals:
void mouseMoved(const QString&);

并发出信号:

void GraphicsView::mouseMoveEvent(QMouseEvent *mouseEvent)
{
 ...
     emit mouseMoved(QString("("+QString::number(mouseMoveCatch.x())+";"
        +QString::number(mouseMoveCatch.y())+")"));
 ...
 }

我确信 QString 已正确包含。但是当我编译时,我在连接线上得到一个错误,说“QString 没有引用一个值”。 我不知道这意味着什么。感谢您的帮助!

【问题讨论】:

  • 您需要在连接行中将SLOT 大写。

标签: qt signals qstring


【解决方案1】:

你有一个案例错误就行了

connect(myCanvas,SIGNAL(mouseMoved(QString)),
    this,slot(setStatusBar(QString)));

您应该使用SLOT,而不是slot

【讨论】:

  • Grrrr 我觉得发布这个真的很愚蠢。非常感谢。 (虽然我的代码仍然不起作用)
  • 如果您使用的是 Qt 5,则可以通过使用新的连接语法来避免此类错误:connect(myCanvas, &GraphicsView::mouseMoved, this, &MainWindow::setStatusBarText);
  • 我试过了,但是(使用 5.2)它给出了一个巨大的错误列表
  • 更新:实际上我又试了一次,发现新语法就像一个魅力。我想我在那里也打错了。非常感谢!
猜你喜欢
  • 2021-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-04
  • 2014-06-10
  • 2022-01-21
  • 1970-01-01
  • 2020-08-22
相关资源
最近更新 更多