Infinite Focus -Schleife in QT
Posted: 11 Feb 2025, 04:05
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_