Qt:在表单上添加文件选择字段(QLineEdit和“浏览”按钮)

27
我需要在我的表单中显示带有“浏览”按钮的QLineEdit。当用户点击按钮时,应该打开QFileDialog等等。
这是一个非常普遍的事情,但我找不到现成的解决方案。我希望在Qt Designer中找到一些类似于QFileSelect之类的小部件,但没有找到任何类似的东西。
我应该手动实现它吗?还是有更正确的方法来做这件事?
1个回答

21

我应该手动实现它吗?还是说有正确的方法可以完成这个任务?

是的,我同意这是一个常见的问题,但不幸的是你需要自己来实现。好消息是你可以通过像这样的方式轻松地完成它:

MyMainWindow::createUI()
{
    label = new QLabel("foo");
    button = new QPushButton("Browse");
    connect(button, SIGNAL(clicked()), SLOT(browse()));
    layout = new QHorizontalLayout();
    layout->addWidget(label);
    layout->addWidget(button);
    setLayout(layout);
}

void MyMainWindow::browse()
{
    QString directory = QFileDialog::getExistingDirectory(this,
                            tr("Find Files"), QDir::currentPath());

    if (!directory.isEmpty()) {
        if (directoryComboBox->findText(directory) == -1)
            directoryComboBox->addItem(directory);
        directoryComboBox->setCurrentIndex(directoryComboBox->findText(directory));
    }
}

8
谢谢,我只是想确保我不会重复造轮子。 - Dmitry Frank
1
这并没有使用QLineEdit,虽然OP要求使用它,所以文件夹路径文本不可见和编辑,或者说它是可见的吗? - Ela782
有人知道为什么这不是Qt默认包含的吗?它似乎是最广泛使用的GUI元素之一。 - in-tension

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接