Russian Qt Forum

Компиляторы и платформы => Mac OS X => Тема начата: funstep от Октябрь 12, 2011, 13:20



Название: Проблема фокуса в Mac OS X
Отправлено: funstep от Октябрь 12, 2011, 13:20
Доброго времени суток!

Возникла следующая проблема:

в Mac OS X при запуске приложения из *.app файла нельзя установить фокус в дочерние QLineEdit. При смене фокуса на другое приложении и обратно, такая возможность появляеться (также все нормально работает если запустить приложение из консоли). Причем в Windows и Linux все работает нормально.

Версия qt: 4.7.1.

Подскажите, пожалуйста, возможные пути решения данной проблемы.


Название: Re: Проблема фокуса в Mac OS X
Отправлено: kambala от Октябрь 12, 2011, 18:32
можно минимальный неработающий пример? в 4.7.4 на 10.6.8 такой проблемы нету (да и сомневаюсь, что дело в версии Qt):
Код
C++ (Qt)
#include <QApplication>
#include <QLineEdit>
#include <QPushButton>
#include <QVBoxLayout>
 
int main(int argc, char **argv)
{
   QApplication app(argc,argv);
 
   QWidget w;
   QLineEdit *le = new QLineEdit(&w);
   QPushButton *b = new QPushButton("Press me", &w);
   QVBoxLayout *vbl = new QVBoxLayout(&w);
   vbl->addWidget(b);
   vbl->addWidget(le);
   b->setFocus(); // без этого фокус сразу на строке ввода
   w.show();
 
   return app.exec();
}


Название: Re: Проблема фокуса в Mac OS X
Отправлено: funstep от Октябрь 13, 2011, 18:58
Цитировать
Код
C++ (Qt)
#include <QApplication>
#include <QLineEdit>
#include <QPushButton>
#include <QVBoxLayout>
 
int main(int argc, char **argv)
{
  QApplication app(argc,argv);
   QWidget w;
   QLineEdit *le = new QLineEdit(&w);
   QPushButton *b = new QPushButton("Press me", &w);
   QVBoxLayout *vbl = new QVBoxLayout(&w);
   vbl->addWidget(b);
   vbl->addWidget(le);
   b->setFocus();
   w.show();
 
   return app.exec();
}
этот код у меня тоже работает нормально.
Возможно проблема связана с тем что у меня следующая иерархия:
    QFrame->QStackedWidget->QFrame->(наследник)QLabel.

Причем что QFrame с QLabel выезжает аннимировано.
Контекстное меню работает нормально на QLabel, можно выделить текст вставить, но нельзя установить фокус и редактировать с клавиатуры.
К сожелению пример привести не могу.


Название: Re: Проблема фокуса в Mac OS X
Отправлено: kambala от Октябрь 13, 2011, 19:11
наверное все-таки QLineEdit, а не QLabel?

может быть проблема из-за анимации... а события фокуса приходят в QLineEdit?

ну вот такой простенький примерчик с анимацией тоже нормально работает.


Название: Re: Проблема фокуса в Mac OS X
Отправлено: funstep от Октябрь 14, 2011, 11:24
Да QLineEdit (оговорился).
Анимацию выключал и без нее не работает, всем виджетам задал политику StrongFocus, но всеравно не работает.
События фокуса не приходят.


Название: Проблема фокуса в Mac OS X
Отправлено: funstep от Октябрь 25, 2011, 13:51
Проблема фокуса не только для QLineEdit - полностью не работает фокус для всех конролов. С чем это может быть связано?


Название: Проблема фокуса в Mac OS X
Отправлено: funstep от Октябрь 28, 2011, 12:18
Проблема решена. QLineEdit не виновен.
Проблема заключалась в другом:
  QSplashScreen забирал фокус при запуске приложения и не отдавал назад.
Но всё равно спасибо за помощь.