C++ QFileDialog-需要正确的
我是“C++与Qt”编程新手,所以我需要帮助C++ QFileDialog-需要正确的,c++,qt,qobject,qfiledialog,C++,Qt,Qobject,Qfiledialog,我是“C++与Qt”编程新手,所以我需要帮助 #include <iostream> #include <QApplication> #include <QLabel> #include <QPushButton> #include <QGridLayout> #include <QWidget> #include <QFileDialog> #include <QImage> #include &l
#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();
}
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
使用名称空间std;
int main(int argc,char*argv[])
{
QApplication应用程序(argc、argv);
QWidget*窗口=新的QWidget;
QGridLayout*layout=新的QGridLayout(0);
QLabel*标签=新QLabel(“Саааааааааааааа1072;
QPushButton*button=新的QPushButton(0);
标签->设置边距(50);
QLabel*label2=新的QLabel(“Пччччччч”,0);
label2->setMargin(50);
标签2->设置最小宽度(600);
Qfile对话框;
QStringList选择;
setFileMode(QFileDialog::AnyFile);
QObject::connect(按钮、信号(单击())、对话框、插槽(显示());
QLabel*lbl=新的QLabel;
布局->添加小部件(标签,0,0,1,3,Qt::AlignCenter);
布局->添加小部件(标签2、1、2、Qt::AlignTop);
布局->添加小部件(按钮,3,1,Qt::AlignCenter);
布局->添加小部件(lbl,2,1,0);
窗口->设置布局(布局);
窗口->显示();
select=QFileDialog::getOpenFileNames(按钮,“选择一个或多个文件”,“”,“”);
QPixmap pm(选择.at(0));
lbl->setPixmap(pm);
返回app.exec();
}
我的程序应该按顺序执行以下操作:
由于您不希望在用户单击按钮之前显示文件对话框,因此不应该像这样在main()函数中调用QFileDialog::getOpenFileNames();相反,在连接到按钮的clicked()信号的slot方法中调用它。QObject::connect(按钮,信号(clicked()),对话框,slot(getOpenFileName(按钮,,,,,,));请纠正这个,我完全不知道。正如您提到的,我只需要将它与button连接起来,您需要创建自己的子类(QLabel、QMainWindow、QWidget等,由您决定,但现在让我们假设QLabel);然后,您需要在MyLabel子类中添加一个“public slots:”部分,并在该部分中声明一个MySlot()方法,然后将希望单击按钮调用的代码放入MySlot()方法体中。然后,您可以执行QOjbect::connect(按钮、信号(单击)、lbl、插槽(MySlot());将信号连接到MySlot()(请确保创建MyLabel而不是QLabel对象)谢谢!这肯定会有帮助!