【发布时间】:2016-09-07 17:10:19
【问题描述】:
我正在尝试为必须对给定文件执行某些操作的程序编写 GUI。它的逻辑是:
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->text()获取您的文本字段的值。