gpt4 book ai didi

c++ - qt,信号槽没有连接?

转载 作者:太空狗 更新时间:2023-10-29 21:27:17 25 4
gpt4 key购买 nike

我有一个 qdialog,底部有一个按钮框;为什么当“信号”出现时这个槽没有被触发?代码如下所示:

    std::unique_ptr<MW::GenStd> box(new MW::GenStd(&tOut, &tIn));
box->ui.ChoiceButtons->addButton ("Ask",
QDialogButtonBox::AcceptRole );
box->ui.ChoiceButtons->addButton ("OverWrite",
QDialogButtonBox::AcceptRole );
box->ui.ChoiceButtons->addButton ("merge",
QDialogButtonBox::AcceptRole );
box->ui.ChoiceButtons->addButton ("Skip",
QDialogButtonBox::RejectRole );

QObject::connect(box->ui.ChoiceButtons, SIGNAL(clicked(QPushButton* b)), box.get(), SLOT(OnClick(QPushButton* b)));

return box->exec();

其中 MW::GenStd 是一个对话框(而 ui.ChoicButtons 是一个按钮框)。模态对话框正确显示 - 但它似乎根本没有交互。按下按钮不会触发事件。插槽声明如下:

public slots:
void OnClick(QPushButton* b) {
auto s(b->text());
if (s == "Merge") {
setResult(2);
} else if (s == "Overwrite") {
setResult(1);
} else if (s == "Skip") {
setResult(0);
} else if (s == "Ask") {
setResult(3);
}
}

};

(我知道在这里进行这样的字符串比较非常糟糕,但这只是验证按钮的快速模拟测试)。但调试显示该功能从未达到!

编辑:正如建议的那样,查看输出显示了一个罪魁祸首:Object::connect: 在 AskGUISupport.cpp:150 中没有这样的信号 QDialogBu​​ttonBox::clicked(QPushButton*)然而,这似乎很奇怪,因为 QDialogBu​​ttonBox 确实有一个点击信号? documentation

最佳答案

不要在连接中使用变量名:

QObject::connect(box->ui.ChoiceButtons, SIGNAL(clicked(QPushButton*)), 
box.get(), SLOT(OnClick(QPushButton*)));

关于c++ - qt,信号槽没有连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9380412/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com