Вопрос по QT
В основе 2 окна QTextEdit , в процессе потребовалось реализовать переключение фокуса через события QT или посредством сигналов если возможно
вопросы по существу:
1)Как корректно сменить фокус?
пробовал подобный фрагмент:
..............................................
void Form0::keyPressEvent(QKeyEvent* eve)
{
int lbl=0;
switch(eve->key())
{
case Key_Home:
if( lbl==0)
{
QMessageBox:: information(0,"lbl", "4");
// eve->accept();
TextEdit4->setFocus();
lbl=1;
//TextEdit4->clearFocus();
}
else
{
// QMessageBox:: information(0,"lbl", "4_2");
TextEdit4_2->setFocus();
lbl=0;
// TextEdit4_2->clearFocus();
}
//eve->accept();
break;
default: QDialog::keyPressEvent(eve);
}
}
.................
только после выбора какого то окна фокус переключается на него -любой *TextEditN и соответственно обработка заканчивается, не понимаю как исправить это
2) Необходим атрибут RеadOnly для окон , однако в таком случае фокус вообще не выбирается, Можно ли переключить фокус виджетов при окнах только для чтения?
и последний:) Как можно реализовать смену по табу, потому что в проге в этом случае просто работает табуляция в каком то текстовом окне ,а не смена фокуса
Вроде Все )
отформатируй код кнопкой {...}
в смысле отформатируй, он вроде понятный, но некорректно работает, вот мне интересно почему: )
как вернуть фокус из текстового поля обратно в форму, чтобы код нормально заработал , я немножко не понимаю..
Код:
void Form0::keyPressEvent(QKeyEvent* eve)
{
int lbl=0;
switch(eve->key())
{
case Key_Home:
if( lbl==0)
{
QMessageBox:: information(0,"lbl", "4");
// eve->accept();
TextEdit4->setFocus();
lbl=1;
//TextEdit4->clearFocus();
}
else
{
// QMessageBox:: information(0,"lbl", "4_2");
TextEdit4_2->setFocus();
lbl=0;
// TextEdit4_2->clearFocus();
}
//eve->accept();
break;
default: QDialog::keyPressEvent(eve);
}
}
{
int lbl=0;
switch(eve->key())
{
case Key_Home:
if( lbl==0)
{
QMessageBox:: information(0,"lbl", "4");
// eve->accept();
TextEdit4->setFocus();
lbl=1;
//TextEdit4->clearFocus();
}
else
{
// QMessageBox:: information(0,"lbl", "4_2");
TextEdit4_2->setFocus();
lbl=0;
// TextEdit4_2->clearFocus();
}
//eve->accept();
break;
default: QDialog::keyPressEvent(eve);
}
}
по сабжу - поиграйся с textinteraction флажками (Qt 4.2 +) / ставь фильтры событий окном для едитов, дропай нажатие tab / напиши наследника QTextEdit с блекджеком и преферансом / накурись и забей
есть переключения по шифт +табу но нужно именно свое сделать по энтеру допустим.
Механизм евентов и переопределения классов посмотрю,спс