Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Список окон QWorkSpace, Как получить список окон? 
V
    Опции темы
loneybibi
  Дата 20.2.2011, 18:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 28.5.2010
Где: Донецк (Украина)

Репутация: 3
Всего: 3



Вопрос в следующем. Есть Workspace и Combobox. Как можно получить список окон рабочей области в Combobox и переключать окна с помощью Combobox? Какие другие варианты возможны ? Спасибо. 


--------------------
Red Hat Fedora 17
Qt 4.8.1 (x64), GCC 4.4.3,
G++ 4.4.3, QtCreator 2.4.1
PM MAIL ICQ   Вверх
loneybibi
Дата 21.2.2011, 00:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 28.5.2010
Где: Донецк (Украина)

Репутация: 3
Всего: 3



Повторюсь. На форме есть WorkSpace, в контекстом меню главного окна есть меню которое управляет дочерними окнами (каскадом, разложить и т.д.) в него по добавляется список окон как и в ComboBox на ToolBar панели. Задача в том что бы переключать активные окна и с помощью меню и ComboBox тоже.
Вообщем сам вроде как разобрался. Создал функцию создания меню "Окна" как основную и функцию updateWindows которая исполняет все остальное. Функция срабатывает при закрытии или открытии дочернего окна. Проблема в том что компилятор ругается на функцию которую я назначаю в слот для созданного нового пункта меню "окна":
Object::connect: No such slot MainWindow::wActivateWindow(id) in mainwindow.cpp:267
Object::connect:  (receiver name: 'MainWindow')

Что не так делаю ? Где затупил ?  smile 

Код

//------функция обновления меню ОКНА-------
void MainWindow::wMenuUpdate()
{
    ui->menuWindow->clear();

    QAction *Cascade=new QAction(this);
    Cascade->setText("Cascade");
    ui->menuWindow->addAction(Cascade);
    connect(Cascade, SIGNAL(triggered()), this, SLOT(wCascade()));

    QAction *Tile=new QAction(this);
    Tile->setText("Tile");
    ui->menuWindow->addAction(Tile);
    connect(Tile, SIGNAL(triggered()), this, SLOT(wTile()));

    ui->menuWindow->addSeparator();

    QAction *CloseActive=new QAction(this);
    CloseActive->setText("Close active");
    ui->menuWindow->addAction(CloseActive);
    connect(CloseActive, SIGNAL(triggered()), this, SLOT(wCloseActive()));

    QAction *CloseAll=new QAction(this);
    CloseAll->setText("Close all");
    ui->menuWindow->addAction(CloseAll);
    connect(CloseAll, SIGNAL(triggered()), this, SLOT(wCloseAll()));

    ui->menuWindow->addSeparator();

    QAction *Next=new QAction(this);
    Next->setText("Next");
    ui->menuWindow->addAction(Next);
    connect(Next, SIGNAL(triggered()), this, SLOT(wNext()));

    QAction *Previous=new QAction(this);
    Previous->setText("Previous");
    ui->menuWindow->addAction(Previous);
    connect(Previous, SIGNAL(triggered()), this, SLOT(wPrevious()));

}



Код

//--------функция выбора окна автивным
void MainWindow::wActivateWindow(int wIndex)
{
      QWidget *wWidget = windowsList->at(wIndex);
      wWidget->show();
      wWidget->setFocus();
}


Код

//-----основная функция выполняющая другие функции---
void MainWindow::updateWindows()
{
    wMenuUpdate();

    windowsList=new QWidgetList;
    *windowsList=WorkSpace->windowList();

    if (windowsList->size()>0){
            wComboList->setEnabled(true);
            wComboList->clear();

            ui->menuWindow->addSeparator();

            for(int i=0; i<windowsList->size();++i){
                wComboList->addItem("window");

                QAction *wMenuAction=new QAction(this);
                wMenuAction->setText("window");
                ui->menuWindow->addAction(wMenuAction);
                //-----тут выдает ошибку
                int id=i;
                connect(wMenuAction,SIGNAL(triggered()),this,SLOT(wActivateWindow(id)));

                }
        }
            else
                {
                    wComboList->setEnabled(false);
                    wComboList->clear();
                    wComboList->addItem("[нет открытых окон]");
                }

}



--------------------
Red Hat Fedora 17
Qt 4.8.1 (x64), GCC 4.4.3,
G++ 4.4.3, QtCreator 2.4.1
PM MAIL ICQ   Вверх
loneybibi
Дата 24.2.2011, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 28.5.2010
Где: Донецк (Украина)

Репутация: 3
Всего: 3



Все разобрался сам. В книге по Qt4 использовался QWorkSpace, а оказывается это элемент 3 версии и он устарел. Сделал все на QMdiArea нашел нормальную книгу. По примерам все получилось.


--------------------
Red Hat Fedora 17
Qt 4.8.1 (x64), GCC 4.4.3,
G++ 4.4.3, QtCreator 2.4.1
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0894 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.