gpt4 book ai didi

c++ - QFileDialog 中的后退和前进按钮没有信号

转载 作者:搜寻专家 更新时间:2023-10-31 01:41:22 26 4
gpt4 key购买 nike

我正在使用 QFileDialog::DontUseNativeDialog。现在我遇到了信号问题。这是我的示例代码:

class A : public QFileDialog
{
A(){
setOption(QFileDialog::DontUseNativeDialog);
connect(this, SIGNAL(directoryEntered(const Qstring), this, SLOT(foo(const QString)));
}

foo(const QString path){
QDir dir(path);
// Code...
}
};

现在,当我使用 DontUseNativeDialog 选项时,我会在对话框的右上角看到三个导航按钮,它们是:

 1. Back
2. Forward
3. Parent Directory

当我按下父目录按钮时,信号 directoryEntered(const QString) 被触发。但它在后退和前进按钮的情况下不起作用。我可以使用任何不同的信号吗?请帮忙。谢谢。

最佳答案

QFileDialog 和 Qt4.8.x 有同样的问题

解决方案是在按钮点击时手动发出信号:

class FileDialog : public QFileDialog {

public:
FileDialog() : QFileDialog() {
this->fixHistoryButtons();
}

private:
void fixHistoryButtons() {
QToolButton backButton = this->findChild<QToolButton *>("backButton");
QToolButton forwardButton = this->findChild<QToolButton *>("forwardButton");
this->connect(backButton, SIGNAL(clicked()), SLOT(backOrForwardButtonClicked()));
this->connect(forwardButton, SIGNAL(clicked()), SLOT(backOrForwardButtonClicked()));
}
private slots:
void backOrForwardButtonClicked() {
/* this->directory() should be save, since we should be called after QFileDialog has done it's thing */
emit this->directoryChanged( this->directory().absolutePath() );
}
};

关于c++ - QFileDialog 中的后退和前进按钮没有信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28536143/

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