如何解决qt6:将 QFileDialog::filesSelected 连接到插槽
基本上我想在我的 QFileDiag 选择了 1 个或多个文件并被接受(单击“打开”按钮)后触发一些代码,问题是我似乎无法在插槽中实际触发我的代码。
这是我的主要小部件中的代码
file_select_diag = new QFileDiag(this)
connect(file_select_diag,&QFileDialog::fileSelected,this,&MainWidget::connect_test);
auto files = file_select_diag->getOpenFileName(
this,tr("test"),QDir::homePath(),tr("text (*.txt)");
void MainWidget::connect_test(QString str)
{
cout << str.toStdString();
}
这是标题声明
{
Q_OBJECT
public:
explicit MainWidget(QWidget *parent = 0); //Constructor
~MainWidget(); // Destructor
private slots:
void connect_test(QString str);
void connect_test2(); //like above but cout << "HIT" << end;
private:
QFileDialog *file_select_diag;
我尝试连接到 connect_test
和 connect_test2
,当我运行我的应用程序并选择文件时,点击打开,没有任何反应。
解决方法
解决方案(从下面 G.M. 的评论中复制)
注意 QFileDialog::getOpenFileName 是一个静态成员 QFileDialog 所以调用 file_select_diag->getOpenFileName(...) 有效地创建了一个独立于 QFileDialog 的实例 file_select_diagand 对此调用 getOpenFileName。
所以这里的两种方法要么完全使用静态方法 getOpenFileName 并且不初始化 file_select_diag 要么完全使用实例方法,配置 file_select_diag 然后使用 file_select_diag->show(),在这种情况下信号将起作用.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。