我的项目中有一个类有问题,点击后出现了带有QTableWidget和QPushButton的新窗口,点击按钮后我应该在stdout上有“test”,但没有显示,这里是这段代码的一部分:
部首:
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;
}
我甚至没有一个警告也没有错误。我在stdout上什么也没有,看起来按钮连接到错误的对象(?)
答案 0 :(得分:0)
好像你忘记了关闭&#34;在测试打印输出上。
尝试使用
qDebug() << "test";
而不是QTextstream
答案 1 :(得分:0)
如何实例化ClientsSelector
?它不是偶然的单身人士或全球变量吗?尝试将connect
调用移动到在ClientsSelector
构造函数之后调用的单独init函数。它帮助我在类似的WTF情况下。它与每个QObject继承者都有一个静态元数据成员这一事实有关,而且在构造函数完成之前你无法确定它何时被完全初始化。如果没有这些元数据,connect
将无效。
例如,请参见:http://www.qtcentre.org/threads/9479-connect-in-constructor
如果仍然丢失,请浏览this checklist。 Qt信号非常容易使用,每个人有时会忘记它也有一些要求。
答案 2 :(得分:0)
您可以执行以下操作以确保已建立连接并调用插槽。
这可能有助于找到原因。