QFileDialog -需要正确
QFileDialog - need correct
本文关键字:QFileDialog 更新时间:2023-10-16
我是"c++ with Qt"编程的新手,所以我需要帮助。
#include <iostream>
#include <QApplication>
#include <QLabel>
#include <QPushButton>
#include <QGridLayout>
#include <QWidget>
#include <QFileDialog>
#include <QImage>
#include <QPixmap>
#include <QDir>
#include <QObject>
#include <QPictureFormatPlugin>
using namespace std;
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QWidget *window = new QWidget;
QGridLayout *layout = new QGridLayout(0);
QLabel *label = new QLabel("<H1><B><CENTER>Сканирование текста</CENTER> <B></H1>", 0);
QPushButton *button = new QPushButton("Открыть", 0);
label->setMargin(50);
QLabel *label2 = new QLabel("<H3><B><CENTER>Полученные данные</CENTER><B></H3>", 0);
label2->setMargin(50);
label2->setMinimumWidth(600);
QFileDialog dialog;
QStringList select;
dialog.setFileMode(QFileDialog::AnyFile);
QObject::connect(button, SIGNAL(clicked()), &dialog, SLOT(show()));
QLabel *lbl = new QLabel;
layout->addWidget(label, 0, 0,1,3,Qt::AlignCenter);
layout->addWidget(label2, 1, 2,Qt::AlignTop);
layout->addWidget(button,3, 1,Qt::AlignCenter);
layout->addWidget(lbl,2,1,0);
window->setLayout(layout);
window->show();
select = QFileDialog::getOpenFileNames(button, "Choose one or more files", "", "");
QPixmap pm(select.at(0));
lbl->setPixmap(pm);
return app.exec();
}
我的程序应该按顺序做这些事情:
- 显示主窗口
- 当我点击一个按钮(在左边),对话框出现。
- 在文件对话框中,我选择一张图片,程序获取图片的目录。最后,每次我按下按钮并在对话框中选择另一个文件时,按钮上方的图片应该更新。
What I have:
文件对话框出现在主窗口之前,我不知道为什么。我选择了一张图片,程序中的图像立即更新。但是,当我再次按下按钮并选择图片后,没有任何效果。
文件对话框首先出现在主窗口之前,我不知道为什么。
原因是因为window->show()命令不是完全同步的——也就是说,当您调用window->show()时,它会将一些事件发送到事件循环的事件队列中,以便在事件循环的下一次迭代中对它们进行操作。正是对这些事件的处理导致了窗口的出现。但是,事件循环在app.exec()中执行,直到调用QFileDialog::getOpenFileNames()之后才被调用。
因为你不希望文件对话框在用户点击按钮之后才出现,所以你不应该像这样在main()函数中调用QFileDialog:: getopenfilename ();相反,在连接到按钮的clicked()信号的插槽方法中调用它。
相关文章:
- 为 QFileDialog 设置默认的 UNC 路径
- 限制用户可以在 QFileDialog 中选择的文件数量
- 在qt QFileDialog中设置后缀在linux中不起作用,如何解决?
- 筛选 QFileDialog 中显示的目录
- 如何禁用或隐藏 QFileDialog 中的默认取消按钮?
- gdborig.exe 在调试 QT 5.8 并在窗口中打开 QFileDialog 时随机崩溃
- 我可以强制 QFileDialog 使用系统区域设置而不是系统语言吗?
- 如何在 QT3 中将复选框添加到 QFileDialog 窗口
- 如何判断 QFileDialog 是否已关闭而不选择文件
- qfiledialog:gtkdialog在没有瞬态父母的情况下映射
- Qfiledialog:文件夹名称在Windows下方出现两次
- 如何使用qfiledialog和提升来保存多个图像
- 无法使用qfiledialog(QT 5.7)打开文件
- 如何在非本机 QFileDialog 中重新填充系统的"Recent places"?
- QFileDialog:选择目录和文件
- 一种在 Mac 上强制关闭模式 QFileDialog 的方法
- 为什么 QFileDialog::selectFile 不起作用?
- qt qfiledialog创建未知的com对象和安全性
- qt :: qfiledialog第二次称为我的应用程序
- 模拟单击"Choose" QFileDialog 对象中的按钮