与えられたファイルでいくつかのアクションを実行する必要があるプログラムのGUIを作成しようとしています。そのロジックは次のようになります。QFileDialogテキストフィールドにファイル名を設定し、いくつかのテキストフィールドでQFileDialogを個別に使用する方法
1)プログラムは1つのテキストフィールドで開始し、1つのボタンが作成されます。
2)ボタンをクリックすると、.exe
ファイルを選択できます。ファイルが選択されている場合、そのパスは最初のマイボタンと論理的にリンクされているテキストフィールドに設定されます。
3)ファイルが前のステップで選択された場合、それにリンクされた新しいテキストフィールドとボタンのペアが作成されます。メインウィンドウのサイズは、新しいペアが追加されたときに動的に変更する必要があります。
ファイルへのパスを現在のテキストフィールドに設定するにはどうすればよいですか? テキストフィールドのデータを編集する必要があります。 QFileDialog
とテキストフィールドとボタンのペアを別に使用できるように、インターフェースを整理する方法。
この場合、信号/スロットの使い方を理解できません。
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QWidget>
#include <QGridLayout>
#include <QVBoxLayout>
#include <QLineEdit>
#include <QPushButton>
class MainWindow : public QWidget
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
void makeInterface();
private slots:
void openFile();
};
#endif
#include <QString>
#include <QFileDialog>
#include <QDebug>
#include "mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QWidget(parent)
{
makeInterface();
}
MainWindow::~MainWindow() {}
void MainWindow::openFile()
{
QString fileName = QFileDialog::getOpenFileName(
this,
tr("OpenFile"),
QDir::currentPath(),
tr("Executable Files (*.exe)"));
if (!fileName.isNull())
{
qDebug() << fileName;
}
}
void MainWindow::makeInterface()
{
QGridLayout *mainLayout = new QGridLayout;
QLineEdit *fldFilePath = new QLineEdit;
QPushButton *btnOpenFile = new QPushButton("*.exe");
connect(btnOpenFile, SIGNAL(clicked()), this, SLOT(openFile()));
mainLayout->addWidget(fldFilePath, 0, 0);
mainLayout->addWidget(btnOpenFile, 0, 1);
QPushButton *btnBuild = new QPushButton("Build");
mainLayout->addWidget(btnBuild, 5, 0);
setLayout(mainLayout);
}
あなたは 'fldFilePath->テキスト()'を使用して、テキストフィールドの値を取得することができます。 –