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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Некоректно отрабатывает QMdiArea при добавлении окна.  (Прочитано 5647 раз)
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« : Октябрь 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;
}
Что присоветуете православные? О_о...
Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #1 : Октябрь 28, 2011, 00:59 »

Блин, еще на одни грабли напоролся, QTableView при увода курсора вниз по ячейкам с пом. КПК не скролится ((((((((((
Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #2 : Октябрь 28, 2011, 01:20 »

Блин, еще на одни грабли напоролся, QTableView при увода курсора вниз по ячейкам с пом. КПК не скролится ((((((((((
отбой, разобрался.
Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #3 : Октябрь 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);
    }
}
« Последнее редактирование: Октябрь 28, 2011, 21:50 от panAlexey » Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #4 : Октябрь 31, 2011, 13:28 »

типа ап ((
Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
villager
Гость
« Ответ #5 : Ноябрь 03, 2011, 00:57 »

вроде типичный MDI Example http://doc.qt.nokia.com/latest/mainwindows-mdi.html
как он может не работать?
сломал чтото, ищи отличия
Записан
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #6 : Ноябрь 03, 2011, 09:41 »

как он может не работать?
сломал чтото, ищи отличия
очень смешно, особенно про отличия.
там всего лишь одно сходство в слове MDI.
« Последнее редактирование: Ноябрь 03, 2011, 09:45 от panAlexey » Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
villager
Гость
« Ответ #7 : Ноябрь 03, 2011, 19:26 »

там всего лишь одно сходство в слове MDI.
ну извини
внешне  - только добавлен таббар, ну и открытие окон - не через меню
а все остальное -  как в примере
Записан
maint
Гость
« Ответ #8 : Октябрь 16, 2012, 18:21 »

как он может не работать?
сломал чтото, ищи отличия
очень смешно, особенно про отличия.
там всего лишь одно сходство в слове MDI.
интересно, ответ по теме нашелся. Второй день не могу понять в чем дело
Записан
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #9 : Октябрь 16, 2012, 21:58 »

как он может не работать?
сломал чтото, ищи отличия
очень смешно, особенно про отличия.
там всего лишь одно сходство в слове MDI.
интересно, ответ по теме нашелся. Второй день не могу понять в чем дело
тут исправлено
Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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