46 lines
1.1 KiB
C++
46 lines
1.1 KiB
C++
#include "FileNameLineEdit.h"
|
|
|
|
FileNameLineEdit::FileNameLineEdit(QWidget* parent)
|
|
: QLineEdit(parent)
|
|
{
|
|
setText(AppSettings::instance().fileName());
|
|
connect(this, &QLineEdit::textChanged, this, &FileNameLineEdit::onTextChanged);
|
|
}
|
|
|
|
void FileNameLineEdit::keyPressEvent(QKeyEvent* event)
|
|
{
|
|
if (event->key() == Qt::Key_Space)
|
|
{
|
|
event->ignore();
|
|
return;
|
|
}
|
|
QLineEdit::keyPressEvent(event);
|
|
}
|
|
|
|
void FileNameLineEdit::inputMethodEvent(QInputMethodEvent* event)
|
|
{
|
|
QString commitString = event->commitString();
|
|
if (commitString.contains(' '))
|
|
{
|
|
commitString.remove(' ');
|
|
QInputMethodEvent filtered(event->preeditString(), event->attributes());
|
|
filtered.setCommitString(commitString);
|
|
QLineEdit::inputMethodEvent(&filtered);
|
|
return;
|
|
}
|
|
QLineEdit::inputMethodEvent(event);
|
|
}
|
|
|
|
void FileNameLineEdit::onTextChanged(const QString& text)
|
|
{
|
|
QString cleaned = text;
|
|
if (cleaned.contains(' '))
|
|
{
|
|
int pos = cursorPosition();
|
|
cleaned.remove(' ');
|
|
setText(cleaned);
|
|
setCursorPosition(qMin(pos, cleaned.length()));
|
|
return;
|
|
}
|
|
AppSettings::instance().setFileName(cleaned);
|
|
} |