在Qt中如何在QLineEdit中添加一个QFileDialog文件
In Qt how to add a file with a QFileDialog in a QLineEdit
我有一个窗口,它有一个名为"…"的按钮,打开另一个窗口,它也有一个名为"…"的按钮,打开一个QFileDialog。在第二个窗口的按钮旁边,有10个QLineEdit来获取10个文件。与QFileDialog,我不能拿一个mp3文件,并把他的名字在第一个QLineEdit。我该怎么办?如果第一个QLineEdit已经被占用了,我怎么能把mp3文件的名字放在第二个QLineEdit中呢?
文件"main.h"只包含Qt.这是我的代码,我尝试了许多解决方案都没有成功:
#include "main.h"
int main(int argc, char **argv)
{
QApplication program(argc, argv);
/* ******************** First Window ******************** */
QWidget window;
QVBoxLayout layout;
window.setWindowTitle("Programme");
window.setWindowIcon(QIcon(":/Images/Images/Bouclier.png"));
window.setFixedSize(450, 400);
QHBoxLayout layouttop;
QLabel labeltop("Nom du programme :");
QLineEdit lineedittop;
layouttop.addWidget(&labeltop);
layouttop.addWidget(&lineedittop);
QHBoxLayout layoutmiddle;
QPushButton buttonnext;
QPushButton buttonprevious;
QPushButton buttonetc("...");
QLineEdit line0;
QLineEdit line1;
QLineEdit line2;
QLineEdit line3;
QLineEdit line4;
QLineEdit line5;
QLineEdit line6;
QLineEdit line7;
QLineEdit line8;
QLineEdit line9;
QVBoxLayout layoutleft;
layoutleft.addWidget(&buttonnext);
buttonnext.setIcon(QIcon(":/Images/Images/Haut.png"));
layoutleft.addWidget(&buttonprevious);
buttonprevious.setIcon(QIcon(":/Images/Images/Bas.png"));
QVBoxLayout layoutcenter;
layoutcenter.addWidget(&line0);
layoutcenter.addWidget(&line1);
layoutcenter.addWidget(&line2);
layoutcenter.addWidget(&line3);
layoutcenter.addWidget(&line4);
layoutcenter.addWidget(&line5);
layoutcenter.addWidget(&line6);
layoutcenter.addWidget(&line7);
layoutcenter.addWidget(&line8);
layoutcenter.addWidget(&line9);
line0.setReadOnly(true);
line1.setReadOnly(true);
line2.setReadOnly(true);
line3.setReadOnly(true);
line4.setReadOnly(true);
line5.setReadOnly(true);
line6.setReadOnly(true);
line7.setReadOnly(true);
line8.setReadOnly(true);
line9.setReadOnly(true);
QVBoxLayout layoutright;
layoutright.addWidget(&buttonetc);
layoutmiddle.addLayout(&layoutleft);
layoutmiddle.addLayout(&layoutcenter);
layoutmiddle.addLayout(&layoutright);
QHBoxLayout layoutbottom;
QPushButton buttonapply("Apply");
QPushButton buttoncancel("Cancel");
layoutbottom.addWidget(&buttonapply);
layoutbottom.addWidget(&buttoncancel);
layout.addLayout(&layouttop);
layout.addLayout(&layoutmiddle);
layout.addLayout(&layoutbottom);
window.setLayout(&layout);
window.show();
/* ******************** First Window ******************** */
/* ******************** Second Window ******************** */
QWidget windowed;
QVBoxLayout layouted;
windowed.setWindowTitle("Session");
windowed.setWindowIcon(QIcon(":/Images/Images/Bouclier.png"));
windowed.setFixedSize(450, 400);
QHBoxLayout layouttoped;
QLabel labeltoped("Nom de la session :");
QLineEdit lineedittoped;
layouttoped.addWidget(&labeltoped);
layouttoped.addWidget(&lineedittoped);
QHBoxLayout layoutmiddled;
QPushButton buttonnexted;
QPushButton buttonprevioused;
QPushButton buttonetced("...");
QString file;
QLineEdit lined0;
QLineEdit lined1;
QLineEdit lined2;
QLineEdit lined3;
QLineEdit lined4;
QLineEdit lined5;
QLineEdit lined6;
QLineEdit lined7;
QLineEdit lined8;
QLineEdit lined9;
QComboBox box;
QLabel label("Durée :");
QVBoxLayout layoutlefted;
layoutlefted.addWidget(&buttonnexted);
buttonnexted.setIcon(QIcon(":/Images/Images/Haut.png"));
layoutlefted.addWidget(&buttonprevioused);
buttonprevioused.setIcon(QIcon(":/Images/Images/Bas.png"));
QVBoxLayout layoutcentered;
layoutcentered.addWidget(&lined0);
layoutcentered.addWidget(&lined1);
layoutcentered.addWidget(&lined2);
layoutcentered.addWidget(&lined3);
layoutcentered.addWidget(&lined4);
layoutcentered.addWidget(&lined5);
layoutcentered.addWidget(&lined6);
layoutcentered.addWidget(&lined7);
layoutcentered.addWidget(&lined8);
layoutcentered.addWidget(&lined9);
lined0.setReadOnly(true);
lined1.setReadOnly(true);
lined2.setReadOnly(true);
lined3.setReadOnly(true);
lined4.setReadOnly(true);
lined5.setReadOnly(true);
lined6.setReadOnly(true);
lined7.setReadOnly(true);
lined8.setReadOnly(true);
lined9.setReadOnly(true);
QVBoxLayout layoutrighted;
layoutrighted.addWidget(&buttonetced);
QVBoxLayout layoutmore;
QHBoxLayout layoutmored;
layoutmored.addWidget(&label);
layoutmored.addWidget(&box);
box.addItem("30");
box.addItem("60");
layoutmore.addLayout(&layoutmored);
layoutmiddled.addLayout(&layoutlefted);
layoutmiddled.addLayout(&layoutcentered);
layoutmiddled.addLayout(&layoutrighted);
layoutmiddled.addLayout(&layoutmore);
QHBoxLayout layoutbottomed;
QPushButton buttonapplyed("Apply");
QPushButton buttoncanceled("Cancel");
layoutbottomed.addWidget(&buttonapplyed);
layoutbottomed.addWidget(&buttoncanceled);
layouted.addLayout(&layouttoped);
layouted.addLayout(&layoutmiddled);
layouted.addLayout(&layoutbottomed);
windowed.setLayout(&layouted);
/* ******************** Second Window ******************** */
/* ******************** Actions First Window ******************** */
QObject::connect(&buttonetc, &QPushButton::clicked, &windowed, &QWidget::show);
/* ******************** Actions First Window ******************** */
/* ******************** Actions Second Window ******************** */
QObject::connect(&buttonetced, &QPushButton::clicked, [&windowed, &file] {file = QFileDialog::getOpenFileName(&windowed, QObject::tr("Sélectionner un fichier son ..."), "C:/", QObject::tr("Audio (*.mp3)"));});
lined0.setText(Qstring(file));
/* ******************** Actions Second Window ******************** */
return program.exec();
}
也许您可以尝试在一个窗口中发出filename的地址,然后在第二个窗口中通过插槽函数
相关文章:
- .cpp和.h文件中的模板专用化声明
- 限制用户可以在 QFileDialog 中选择的文件数量
- 如何判断 QFileDialog 是否已关闭而不选择文件
- Qfiledialog:文件夹名称在Windows下方出现两次
- 无法使用qfiledialog(QT 5.7)打开文件
- QFileDialog:选择目录和文件
- QFileDialog:使用 getOpenFileName 允许不存在的文件
- QFileDialog未提供所选文件
- 接受单个文件或单个目录的 QFileDialog
- 需要使用 QFileDialog 保存一个新文件
- 有没有一种方法可以在Linux上使用QFileDialog自动为文件添加扩展名
- 如何使用QFileDialog打开虚拟文件夹
- 无法从OSX dylib显示OSX Finder选择文件对话框(QFileDialog::getOpenFileName
- 在Qt中如何在QLineEdit中添加一个QFileDialog文件
- QFileDialog在关闭/析构时冻结(选择文件或取消)
- Qt -如何复制文件与QFile::复制使用QFileDialog
- QFileDialog:如何通过触摸屏输入选择多个文件
- 使用QFileDialog自动保存文件
- QFileDialog:选择文件后添加后缀
- QFileDialog - 保存具有指定文件名的文件