Page 1 of 1

Infinite Focus -Schleife in QT

Posted: 11 Feb 2025, 04:05
by Guest
Ich schreibe ein einfaches Tool in QT 6,8 C ++ 23, um mehr über Qt zu erfahren. Ubuntu 22.04 gegen Code. Wenn sich der Benutzer auf die Zeile konzentriert, sollte das Tool QFiledialog öffnen, damit er nicht den vollständigen Pfad eingeben muss. Die Zeilenbearbeitung selbst sollte nur gelesen werden. Der Dialog schließt es sofort wieder auf, da der Fokus immer noch auf der Zeilenbearbeitung liegt. Wie verliere ich den Fokus, nachdem der Dateidialog schließt? < /P>

Code: Select all

#ifndef DIRECTORYLINEEDIT_H_
#define DIRECTORYLINEEDIT_H_

#include 
#include 
class DirectoryLineEdit : public QLineEdit {
Q_OBJECT

public:
explicit DirectoryLineEdit(const char* dleName, const char* title, int leWidth, QWidget *parent = nullptr)
: QLineEdit{parent}, fileDialogTitle{title}
{
setObjectName(QString::fromUtf8(dleName));
setStyleSheet("width: " + QString::number(leWidth) + "px;");
setReadOnly(true);
}

void focusInEvent(QFocusEvent *event)
{
QString textToChange = text();

textToChange = QFileDialog::getExistingDirectory(nullptr, fileDialogTitle,
textToChange, QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks);

setText(textToChange);
}

private:
QString fileDialogTitle;
};

#endif // DIRECTORYLINEEDIT_H_