Бесконечная петля фокуса в QT ⇐ C++
Бесконечная петля фокуса в QT
Я пишу простой инструмент в QT 6.8 C ++ 23, чтобы узнать о QT. Ubuntu 22.04 против кода. < /P>
У меня есть 2 qlineedit для исходного каталога и целевого каталога. Когда пользователь сосредотачивается на редактировании линии, инструмент должен открыть Qfiledialog, чтобы ему не приходилось печатать полный путь. Редактирование линии должно быть прочитано только. Диалог закрывает его немедленно вновь открывается, потому что фокус все еще находится на редактировании линии. Как мне потерять фокус после того, как диалоговое окно файла закрывается? < /P>
#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_
Подробнее здесь: https://stackoverflow.com/questions/794 ... loop-in-qt
Я пишу простой инструмент в QT 6.8 C ++ 23, чтобы узнать о QT. Ubuntu 22.04 против кода. < /P>
У меня есть 2 qlineedit для исходного каталога и целевого каталога. Когда пользователь сосредотачивается на редактировании линии, инструмент должен открыть Qfiledialog, чтобы ему не приходилось печатать полный путь. Редактирование линии должно быть прочитано только. Диалог закрывает его немедленно вновь открывается, потому что фокус все еще находится на редактировании линии. Как мне потерять фокус после того, как диалоговое окно файла закрывается? < /P>
#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_
Подробнее здесь: https://stackoverflow.com/questions/794 ... loop-in-qt
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение