crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Работа с QMdiSubWindow
bynet
  опции профиля:
сообщение 12.11.2010, 14:52
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 69
Регистрация: 17.3.2008
Из: Belarus
Пользователь №: 124

Спасибо сказали: 0 раз(а)




Репутация:   0  


Проблема в следующем, создаю главное окно, в главном по нажатию клавищи показывается 2 окно, по нажатию во 2 окне кнопки появляется 3 окно. Если в третьем окне нажать крестик, закрывается и 2 и 3 окно. Но если закрыть 2 окно 3 вместе не закрывается. Вот код, что я делаю не так?
Раскрывающийся текст
NaklWindow::NaklWindow()
{
    setupUi(this);

    mdiArea->setOption(QMdiArea::DontMaximizeSubWindowOnActivation,true);

    db = QSqlDatabase::addDatabase("QIBASE");
    db.setHostName("localhost");
    db.setDatabaseName("D:\\Data\\data.fdb");
    db.setUserName("sysdba");
    db.setPassword("masterkey");
    db.open();

    model = new QSqlRelationalTableModel();
    model->setTable("trustdoc");

    model->setRelation(3,QSqlRelation("contragent","id","name"));
    model->setRelation(4,QSqlRelation("datacompany", "id", "name"));
    model->setRelation(5,QSqlRelation("sppeople", "id", "fio"));

    model->setHeaderData(0, Qt::Horizontal, trUtf8("№"));
    model->setHeaderData(1, Qt::Horizontal, trUtf8("Дата выдачи"));
    model->setHeaderData(3, Qt::Horizontal, trUtf8("Поставщик"));
    model->setHeaderData(5, Qt::Horizontal, trUtf8("Выдана"));

    model->select();

    tableView->setModel(model);

    tableView->setSelectionBehavior(QAbstractItemView::SelectRows);
    tableView->horizontalHeader()->setResizeMode(QHeaderView::Stretch);
    tableView->setItemDelegate(new QSqlRelationalDelegate(tableView));
    tableView->setColumnHidden(2,true);
    tableView->setColumnHidden(4,true);
    tableView->setColumnHidden(6,true);
    tableView->setColumnHidden(7,true);

    QMdiSubWindow *ssb= mdiArea->addSubWindow(tableView);
    ssb->setWindowFlags(Qt::FramelessWindowHint);
    ssb->showMaximized();

    createAction();
    createToolBar();
    setCentralWidget(mdiArea);

}

void NaklWindow::createAction()
{
    add = new QAction(QIcon(":/images/note_add.png"),trUtf8("Добавить"),this);
    connect(add,SIGNAL(triggered()),SLOT(addShow()));

    edit = new QAction(QIcon(":/images/note_edit.png"),trUtf8("Изменить"),this);
    connect(edit,SIGNAL(triggered()),SLOT(editShow()));

    del = new QAction(QIcon(":/images/note_del.png"),trUtf8("Удалить"),this);
    connect(del,SIGNAL(triggered()),SLOT(delShow()));

    find = new QAction(QIcon(":/images/note_find.png"),trUtf8("Поиск"),this);
}

void NaklWindow::createToolBar()
{
    toolBar->addAction(add);
    toolBar->addAction(edit);
    toolBar->addAction(del);
    toolBar->addAction(find);
}

void NaklWindow::addShow()
{

    nkaddWindow = new NaklAddWindow;
    QMdiSubWindow *ssb2 = mdiArea->addSubWindow(nkaddWindow);
    connect(nkaddWindow->getButtonPol(),SIGNAL(clicked()),SLOT(addPolychatelShow()));
    ssb2->show();

}

void NaklWindow::editShow()
{


}

void NaklWindow::delShow()
{

}

void NaklWindow::addPolychatelShow()
{

    QTableView *table = new QTableView;
    QMdiSubWindow *ssb3=mdiArea->addSubWindow(table);
    ssb3->show();


}


Сообщение отредактировал kwisp - 12.11.2010, 15:17
Причина редактирования: тег expand
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
bynet
  опции профиля:
сообщение 16.11.2010, 13:37
Сообщение #2


Студент
*

Группа: Участник
Сообщений: 69
Регистрация: 17.3.2008
Из: Belarus
Пользователь №: 124

Спасибо сказали: 0 раз(а)




Репутация:   0  


может просто организовано все неправильно?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 16.11.2010, 14:01
Сообщение #3


фрилансер
******

Группа: Участник
Сообщений: 2939
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


а расскажи, КАК ты хотел всё организовать ?
схема, словесное описание, наконец
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 16.11.2010, 14:31
Сообщение #4


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(bynet @ 12.11.2010, 18:52) *
в главном по нажатию клавищи показывается 2 окно
окно или субокно?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
bynet
  опции профиля:
сообщение 17.11.2010, 0:28
Сообщение #5


Студент
*

Группа: Участник
Сообщений: 69
Регистрация: 17.3.2008
Из: Belarus
Пользователь №: 124

Спасибо сказали: 0 раз(а)




Репутация:   0  


Код проекта
Выше выклал архив проекта. Запутался вообще. Пробовал по разнаму. На 4 окне проблемы.

Приблизительно так:
Главное окно QMainWindow. По нажатию кнопки появляется окно в QMdiArea окна QMainWindow. Вложенность окон доходит до 5-ти. Тоесть При надатии в первом окне кнопки, появляется окно №2, по нажатии в окне №2 кнопки №2, появляется окно №3 и так далее.
Подскажите как правильно мне это организовать, каждое окно как отдельный класс. Окна создаю в QDesigner.

Если надо могу приблизительную схему набросать.
В моем случаи нажимаю Журналы-> Накладные. В первом окне отобржается в табличном виде список накладных. По нажатии кнопки добавить, появляется окно, с данными для ввода. В графе получатель нажимаю кнопку и появляется еще одно окно с выборам получателя. Пробовал по разному но нормально отобразить окно с выборам получателя не получалось. В Архиве последний вариант.
Думал все отображать в QMdiArea главного окна, тогда получается связывать кнопки разных окон надо. А они не доступны. Пробовал в каждом окне иметь свой mdi и в нем добавлять. Тоже тупик на предпоследнем окне.
Жду ваших предложений. Заранее СПАСИБО!!!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 17.11.2010, 1:23
Сообщение #6


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(bynet @ 17.11.2010, 4:28) *
По нажатии кнопки добавить, появляется окно, с данными для ввода.
обычно это модальное диалоговое окно
Вобще судя по последнему описанию, Тебе в основном диалоговые окна надо реализовывать, а не субокна
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 17.11.2010, 8:05
Сообщение #7


фрилансер
******

Группа: Участник
Сообщений: 2939
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


bynet, ох, делай поменьше вложенных заголовочников, а то проект так долго пересобирается после какого-то действия в *.h или в дизайнере )) А проектик то ещё небольшой. Что потом будет ?

А по теме - правильно Юрий говорит. Ты создаёшь подокна (у тебя они даже за краем основного окна не могут быть видны - обрезаются), а такие диалоги нужно делать модальными, тогда много вопросов сразу снимается: блокировка окон ниже, ожидание завершения работы пользователя с диалогом

Сообщение отредактировал Алексей1153 - 17.11.2010, 8:06
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.4.2024, 2:59