Russian Qt Forum
Май 03, 2024, 09:45 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Проблема фокуса в Mac OS X  (Прочитано 5707 раз)
funstep
Гость
« : Октябрь 12, 2011, 13:20 »

Доброго времени суток!

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

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

Версия qt: 4.7.1.

Подскажите, пожалуйста, возможные пути решения данной проблемы.
« Последнее редактирование: Октябрь 28, 2011, 12:22 от funstep » Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4727



Просмотр профиля WWW
« Ответ #1 : Октябрь 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();
}
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
funstep
Гость
« Ответ #2 : Октябрь 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, можно выделить текст вставить, но нельзя установить фокус и редактировать с клавиатуры.
К сожелению пример привести не могу.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4727



Просмотр профиля WWW
« Ответ #3 : Октябрь 13, 2011, 19:11 »

наверное все-таки QLineEdit, а не QLabel?

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

ну вот такой простенький примерчик с анимацией тоже нормально работает.
« Последнее редактирование: Октябрь 13, 2011, 19:45 от kambala » Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
funstep
Гость
« Ответ #4 : Октябрь 14, 2011, 11:24 »

Да QLineEdit (оговорился).
Анимацию выключал и без нее не работает, всем виджетам задал политику StrongFocus, но всеравно не работает.
События фокуса не приходят.
« Последнее редактирование: Октябрь 14, 2011, 11:26 от funstep » Записан
funstep
Гость
« Ответ #5 : Октябрь 25, 2011, 13:51 »

Проблема фокуса не только для QLineEdit - полностью не работает фокус для всех конролов. С чем это может быть связано?
Записан
funstep
Гость
« Ответ #6 : Октябрь 28, 2011, 12:18 »

Проблема решена. QLineEdit не виновен.
Проблема заключалась в другом:
  QSplashScreen забирал фокус при запуске приложения и не отдавал назад.
Но всё равно спасибо за помощь.
« Последнее редактирование: Октябрь 28, 2011, 12:21 от funstep » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.103 секунд. Запросов: 22.