【发布时间】:2021-09-30 02:47:38
【问题描述】:
基本上我想在我的 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,当我运行我的应用并选择文件时,点击打开,没有任何反应。
【问题讨论】:
-
请注意
QFileDialog::getOpenFileName是QFileDialog的static成员,因此调用file_select_diag->getOpenFileName(...)有效地创建了一个独立于file_select_diag的QFileDialog实例,并针对此调用getOpenFileName。 -
如果问题解决了,请回答您自己的问题,而不是将解决方案放在问题中
标签: qt signals slot qfiledialog qt6