Solved QLineEdit lostFocus problem
-
@eddy I've started to load it to my smartphone (Android) then i've decided to try before on my mac..
i haven't put this lines:
CONFIG += mobility MOBILITY =
in the pro file..
now i've comment it with #
the only errors i can see is in Compile Output:
duplicate symbol _Target in:
fresatura.o
mainwindow.o
duplicate symbol _Target in:
fresatura.o
moc_fresatura.o
ld: 2 duplicate symbols for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [CNCMaster.app/Contents/MacOS/CNCMaster] Error 1
15:10:04: The process "/usr/bin/make" exited with code 2.
Error while building/deploying project CNCMaster (kit: Desktop Qt 5.13.0 clang 64bit)
When executing step "Make"
15:10:04: Elapsed time: 00:03.i've searched in the project but i can't find duplicate
-
It may cause trouble, because you define two
QObject
- derived classes in one header file. Put your custom LineEdit in a separate headerfile (and .cpp) and include it in your dialog. Then try to compile it again :) -
@pl45m4
i've definded it in a separate filemylineedit.h
#ifndef MYLINEEDIT_H #define MYLINEEDIT_H #include <QApplication> #include <QLineEdit> extern QString Target; class MyLineEdit : public QLineEdit { Q_OBJECT public: MyLineEdit(QWidget *parent = nullptr) : QLineEdit(parent){} protected: void focusOutEvent(QFocusEvent *event) { QLineEdit::focusOutEvent(event); QWidget * widgetName = qApp->focusWidget(); Target = widgetName->objectName(); if(!hasAcceptableInput()) { setFocus(); } } signals: }; #endif // MYLINEEDIT_H
and i've #included it in fresatura.cpp
#include "mylineedit.h"
but no way..
Undefined symbols for architecture x86_64:
"_Target", referenced from:
MyLineEdit::focusOutEvent(QFocusEvent*) in moc_mylineedit.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [CNCMaster.app/Contents/MacOS/CNCMaster] Error 1
15:32:58: The process "/usr/bin/make" exited with code 2.
Error while building/deploying project CNCMaster (kit: Desktop Qt 5.13.0 clang 64bit)
When executing step "Make"
15:32:58: Elapsed time: 00:02. -
@thecipo76 said in QLineEdit lostFocus problem:
extern QString Target;and then in the mylineedit.CPP file you also have
QString Target;
so its actually defined ?
-
@mrjj ok i've defined it in .cpp file and works..
but i've lost Target value -
Hi
Can you explain the original issue ?
If you click on lineEdit , then click on keyboard, then
lineedit loose its focus ? -
@mrjj No, if i click on "1" pushbutton i have to read Target in order to know in wich mylineedit i have to insert "1".
Target is the mylineedit who lost focus
i don't know if it's clear
-
@thecipo76
well first of all the buttons should have NoFocus set so clicking them do not steal focus.
There is no reason for it to lose focus unless you pop something else up first that takes focus.
But in your case, its not keyboard that steal it but something else
that takes focus while in the window ?? -
@mrjj Ah.. with NoFocus setted i don't need to subclass QLineEdit
and it's all more easyThank you very much
-
@thecipo76
Yep it helps a lot. :)
I used qApp->focusWidget(); and sendEvent (key down / key up ) to post the keys to any widget that has keyboard focus and it works pretty well.