27

I need to display QLineEdit with "Browse" button at my form. When user clicks button, QFileDialog should be opened, and so on.

This is pretty common thing, but I can't find ready-made solution for that. I expected in Qt Designer some widget like QFileSelect, or something like that, but found nothing similar.

Should I implement it by hand? Or, what is the correct way to do this?

László Papp
  • 51,870
  • 39
  • 111
  • 135
Dmitry Frank
  • 10,417
  • 10
  • 64
  • 114

1 Answers1

21

Should I implement it by hand? Or, what is the correct way to do this?

Yes, I agree with you that it is a common thing, but unfortunately you will need to implement this yourself. The good news is that you can do this easily by something like this:

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));
    }
}
László Papp
  • 51,870
  • 39
  • 111
  • 135
  • 8
    Thanks, I just wanted to make sure I'm not going to re-invent the wheel. – Dmitry Frank Dec 27 '13 at 07:00
  • 1
    This is not using `QLineEdit` though as asked by OP, so the text (path to the folder) is not viewable and editable, or is it? – Ela782 Dec 30 '18 at 00:14
  • Does anyone have an idea why this isn't included in qt by default? It seems like one of the most widely used gui elements. – in-tension Jan 27 '23 at 01:36