3

我的项目中的一个类有问题,单击后出现带有 QTableWidget 和 QPushButton 的新窗口,单击按钮后我应该在标准输出上进行“测试”,但没有显示,这里是这段代码的一部分:

标题:

class ClientsSelector : public QWidget {
Q_OBJECT

public:
ClientsSelector(InvoiceTab* parent);
QWidget *window;

private:
QPushButton *accept;

public slots:
void loadData();

构造函数:

window = new QWidget();
layout = new QGridLayout();
layout->addWidget(table, 0, 0);

/*code*/

accept = new QPushButton(QString::fromUtf8("Load data"));
connect(accept, SIGNAL(clicked()), this, SLOT(loadData()));
layout->addWidget(accept, 0, 1);

/*code*/

window->setLayout(layout);

window->show();

方法:

void ClientsSelector::loadData() {

QTextStream std(stdout);
std << "test" << endl;

}

我什至没有一个警告或错误。我在标准输出上什么都没有,看起来按钮连接到错误的对象(?)

4

3 回答 3

1

你如何实例化ClientsSelector?它不是偶然的单例或全局变量吗?尝试将调用移动到在构造connect函数之后调用的单独的 init 函数。ClientsSelector它在类似的 WTF 情况下帮助了我。这与每个 QObject 继承者都有一个静态元数据成员这一事实有关,在构造函数完成之前,您无法确定它何时完全初始化。connect没有该元数据将无法工作。

例如,请参见此处:http ://www.qtcentre.org/threads/9479-connect-in-constructor

如果仍然丢失,请查看此清单。Qt 信号非常好用,大家有时会忘记它也有一些要求。

于 2012-09-13T13:50:38.963 回答
0

好像您忘记了测试打印输出上的“关闭”。

尝试使用

qDebug() << "test";

而不是 QTextstream

于 2012-09-13T10:35:14.820 回答
0

您可以执行以下操作以确保建立连接并调用插槽。

  1. connect 函数返回连接状态。检查连接是否正确。
  2. 放置一个断点并查看按下按钮时是否调用了 loadData()。

这可能有助于找到原因。

于 2012-09-14T05:33:02.243 回答