Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: MDI window и plugin
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt GUI
balbes
Привет всем.
Есть главное окно, MDI window. В нем загружается плагин, загружается нормально.
Плагин передает гланому окну меню, которое нужно добавить к основному, а при клике по пункту меню, должно открыться дочернее окно, формирующееся в плагине.

Меню создается без проблем, но вот при клике по данному меню окно не создается, вот код создания меню и слота в плагине:
QMenu *CTestPlugin::getMenu( QMenuBar *pMenuBar )
{
    QAction *pAction= new QAction( tr("&Окно"), this );
    connect( pAction, SIGNAL( triggered(bool)), this, SLOT( createChildWindow()) );
    QMenu *pMenu = pMenuBar->addMenu( name() );
    pMenu->addAction( pAction );
    return pMenu;
}

void CTestPlugin::createChildWindow()
{
    QWidget *pWidget = getSubWindow();
    CMainWindow *pWindow = this->mainWindow();
    if( pWindow )
    {
        QMdiArea *pArea = pWindow->area();
        if(pArea)
            pArea->addSubWindow( pWidget );
        qDebug() << "pArea: " << pArea << " thread: " << QThread::currentThread();
    }
}
Адреса pWindow, pArea, и потока те же что и у основного окна, к которому собственно и нужно получить доступ.

Что я делаю не так? Почему слот выполняется, но окно не появляется?
ViGOur
Сделай так и все должно работать:
QMdiSubWindow * pSubWindow= pArea->addSubWindow( pWidget );
pSubWindow->show();  // <----------------- Добавить это строку
balbes
Хех, спасибо помогло!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.