다음과 같은 문제가 있습니다. 응용 프로그램과 함께 "시작"창이 나타나고 마지막 프로젝트를 열어 새 프로젝트를 만드는 등의 버튼이 몇 개 있습니다. 누르는 동안,이 버튼들은 창을 숨기고 물건들을합니다.QT window 리눅스에서의 ActivationChange 이벤트
이 창은 다음 코드와 플래그로 생성됩니다
void MainWindowButtonDialog::showMe()
{
setModal(false);
setWindowFlags(Qt::SplashScreen | Qt::CustomizeWindowHint |
Qt::WindowStaysOnTopHint | Qt::X11BypassWindowManagerHint);
show();
}
창이 m_btnDlg
라고합니다.
이제 응용 프로그램이 포커스를 잃을 때 클라이언트의 요청으로 인해이 창을 숨기고 응용 프로그램에 포커스가 있으면 다시 표시해야합니다. 이 문제에 지금
void MainWindow::changeEvent(QEvent *e)
{
if(e->type() == QEvent::WindowStateChange)
{
if(isMinimized())
{
if(m_btndlg && m_btndlg->isVisible())
{
m_btndlg->hide();
m_splashWasVisible = true;
}
}
else
{
if(m_splashWasVisible)
{
m_btndlg->show();
m_splashWasVisible = false;
}
}
}
if(e->type() == QEvent::ActivationChange)
{
if(!isActiveWindow())
{
if(m_btndlg && m_btndlg->isVisible() && !m_btndlg->isActiveWindow())
{
m_btndlg->hide(); // *****
m_splashWasVisible = true;
}
}
else
{
if(m_splashWasVisible)
{
m_btndlg->show();
m_splashWasVisible = false;
}
}
}
QMainWindow::changeEvent(e);
}
: 이것은 다음과 같은 코드에 의해 이루어집니다 위의 코드는 모두 리눅스에서 (지금까지 완벽하게 작동 -에 CentOS 5.x의에 그놈 2.X 및 KDE 3.x 및도 윈도우 , 모든 흥미있는 버전). 최근에 클라이언트가 몇몇 Fedora 시스템과 Gnome 3, KDE 4 등을 설치했습니다 ... 갑자기 응용 프로그램이 재미있게 작동합니다. 새 프로젝트를 만들기 위해 단추를 누르면 시작 창이 숨겨지고 아무 일도 일어나지 않습니다. 위의 * *으로 표시된 줄이 담당합니다. 이러한 새로운 창 관리자가 활성화 이벤트를 순서대로 보내지 않은 것으로 보입니다.
누구에게 경험이 있습니까?
(요청시 추가 코드 제공). 우리는 Qt 4.6.3 감사를 사용합니다.
이 문제를 해결했습니다. 문제는이 숨기기 후 또한 setFlags 않았다 ... 그리고 놀랍게도 Qt :: SplashWindow 플래그가 지정되었을 때 QT 내에서 무언가가 깨졌을 때, 내 부모에서 0 인 부모를 설정하려고했기 때문에 문제가 발생했습니다. 케이스. 어쩌면이 문제는 이후 릴리스에서 수정 될 수 있습니다. 그러나 당신이 나를 밀 쳤던 방향에 감사드립니다. – fritzone