Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: panAlexey от Октябрь 27, 2011, 21:28



Название: Некоректно отрабатывает QMdiArea при добавлении окна.
Отправлено: panAlexey от Октябрь 27, 2011, 21:28
Все окна остаются "текущими" Ctrl+Tab не срабатывает (((
Код создания:
Код:
void uoDbGuiFactory::showForm(QString tabNameIntern, uoFormType fType, int IDElem, QString urlstr, int parent)
{
    uoDbRefTable* refTable = m_dbMan->findTable(tabNameIntern);
    if (refTable){
        QString data = refTable->getUrlByForm(fType);
        QWidget* wi = m_mainWnd->findByDbURL(urlstr);
        if (!wi){
            if (fType == uoFormT_List){
                uoDbRefTableListIface* iFace = new uoDbRefTableListIface(this, refTable);
                uoDbFormList* form = new uoDbFormList(0,iFace);

                form->setObjectName(urlstr);
                m_mainWnd->addTabDb( form , refTable->m_descr);
            } else if (fType == uoFormT_Group || fType == uoFormT_Elem){
                uoDbRefTableIface* iFace = new uoDbRefTableIface(this, refTable,"*",  urlstr);
                iFace->setCurentsElement(IDElem, parent);
                uoDbFormElement* form = new uoDbFormElement(0,iFace);

                form->setObjectName(urlstr);
                m_mainWnd->addTabDb( form , refTable->m_descr);
            }
        }
    }
}

Код добавления:
Код:
void uoMDITabWidget::addTabDb(uoDbForm *widget, QString name)
{
if (!m_mdiArea)
return;

qmdiClient *client = dynamic_cast<qmdiClient*>(widget);
if (client) client->mdiServer = this;

widget->setAttribute( Qt::WA_DeleteOnClose, true );
QMdiSubWindow *subWindow = m_mdiArea->addSubWindow( widget );
m_tabBar->addTab( name );
widget->m_mdiParent =subWindow;

widget->show();
// subWindow->show();
// widget->activateWindow();
// widget->raise(); //http://www.qtcentre.org/archive/index.php/t-30647.html
subWindow->raise(); //http://www.qtcentre.org/archive/index.php/t-30647.html
m_widgetList.append( subWindow );
connect( subWindow, SIGNAL(destroyed(QObject*)), this, SLOT(windowDeleted(QObject*)));
// m_activeWidget = subWindow;
}
Что присоветуете православные? О_о...


Название: Re: Некоректно отрабатывает QMdiArea при добавлении окна.
Отправлено: panAlexey от Октябрь 28, 2011, 00:59
Блин, еще на одни грабли напоролся, QTableView при увода курсора вниз по ячейкам с пом. КПК не скролится ((((((((((


Название: Re: Некоректно отрабатывает QMdiArea при добавлении окна.
Отправлено: panAlexey от Октябрь 28, 2011, 01:20
Блин, еще на одни грабли напоролся, QTableView при увода курсора вниз по ячейкам с пом. КПК не скролится ((((((((((
отбой, разобрался.


Название: Re: Некоректно отрабатывает QMdiArea при добавлении окна.
Отправлено: panAlexey от Октябрь 28, 2011, 12:43
Все окна остаются "текущими" Ctrl+Tab не срабатывает (((
...
Что присоветуете православные? О_о...
ап.
похоже в QMdiArea глючек:
Цитировать
    case QEvent::WindowActivate: {
        d->isActivated = true;
        if (d->childWindows.isEmpty())
            break;
        if (!d->active)
            d->activateCurrentWindow();
        d->setChildActivationEnabled(false, true);
        break;
Код:
QMdiSubWindow *QMdiArea::currentSubWindow() const
{
    Q_D(const QMdiArea);
    if (d->childWindows.isEmpty())
        return 0;

    if (d->active)
        return d->active;

    if (d->isActivated && !window()->isMinimized())
        return 0;

    Q_ASSERT(d->indicesToActivatedChildren.count() > 0);
    int index = d->indicesToActivatedChildren.at(0);
    Q_ASSERT(index >= 0 && index < d->childWindows.size());
    QMdiSubWindow *current = d->childWindows.at(index);
    Q_ASSERT(current);
    return current;
}

Код:
void QMdiAreaPrivate::activateCurrentWindow()
{
    QMdiSubWindow *current = q_func()->currentSubWindow();
    if (current && !isExplicitlyDeactivated(current)) {
        current->d_func()->activationEnabled = true;
        current->d_func()->setActive(true, /*changeFocus=*/false);
    }
}


Название: Re: Некоректно отрабатывает QMdiArea при добавлении окна.
Отправлено: panAlexey от Октябрь 31, 2011, 13:28
типа ап ((


Название: Re: Некоректно отрабатывает QMdiArea при добавлении окна.
Отправлено: villager от Ноябрь 03, 2011, 00:57
вроде типичный MDI Example http://doc.qt.nokia.com/latest/mainwindows-mdi.html (http://doc.qt.nokia.com/latest/mainwindows-mdi.html)
как он может не работать?
сломал чтото, ищи отличия


Название: Re: Некоректно отрабатывает QMdiArea при добавлении окна.
Отправлено: panAlexey от Ноябрь 03, 2011, 09:41
как он может не работать?
сломал чтото, ищи отличия
очень смешно, особенно про отличия.
там всего лишь одно сходство в слове MDI.


Название: Re: Некоректно отрабатывает QMdiArea при добавлении окна.
Отправлено: villager от Ноябрь 03, 2011, 19:26
там всего лишь одно сходство в слове MDI.
ну извини
внешне  - только добавлен таббар, ну и открытие окон - не через меню
а все остальное -  как в примере


Название: Re: Некоректно отрабатывает QMdiArea при добавлении окна.
Отправлено: maint от Октябрь 16, 2012, 18:21
как он может не работать?
сломал чтото, ищи отличия
очень смешно, особенно про отличия.
там всего лишь одно сходство в слове MDI.
интересно, ответ по теме нашелся. Второй день не могу понять в чем дело


Название: Re: Некоректно отрабатывает QMdiArea при добавлении окна.
Отправлено: panAlexey от Октябрь 16, 2012, 21:58
как он может не работать?
сломал чтото, ищи отличия
очень смешно, особенно про отличия.
там всего лишь одно сходство в слове MDI.
интересно, ответ по теме нашелся. Второй день не могу понять в чем дело
тут (http://uoreceptorru.googlecode.com/files/uoReceptor.0.5.rar) исправлено