crossplatform.ru

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

> Создание и добавление окон в QMdiArea, Как реализовать?
bynet
  опции профиля:
сообщение 2.11.2010, 12:16
Сообщение #1


Студент
*

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

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




Репутация:   0  


Создаю главное окно QMainWindow. Затем устанавливаю центральный виджет QMdiArea. Есть другой класс ClientWindow: QMainWindow.
Добавляю ClientWindow в Mdiarea. Разварачиваю clientwindow максимально. У clientwindow есть кнопка по нажатии которой поверх этого окна должно дабавится Qwidget. Все работает. Но Qwidget тоже разварачивает максимально. Если сварачиваю то сварачиваются 2.

Как сделать чтобы qwidget был размером 200 на 200(некакие ресайзыне не помагают), а clientwindow был развернут максимально?

Код:
#include <QtGui>
#include "mainwindow.h"

MainWindow::MainWindow()
{

    createActions();
    createMenus();
    mdiArea = new QMdiArea();
  //  mdiArea->setViewMode(QMdiArea::TabbedView);
    setCentralWidget(mdiArea);
    setWindowTitle(trUtf8("аорпм"));
    showMaximized();

}


MainWindow::~MainWindow()
{

}


void MainWindow::createActions()
{
    spClient = new QAction(trUtf8("Клиенты"),this);
    connect(spClient,SIGNAL(triggered()),this,SLOT(spClientShow()));

}

void MainWindow::createMenus()
{
    spMenu = menuBar()->addMenu(trUtf8("Справочники"));
    spMenu->addAction(spClient);

}

void MainWindow::spClientShow()
{
    clWindow = new ClientWindow;
    mdiArea->addSubWindow(clWindow);
    connect(clWindow->getAddAction(),SIGNAL(triggered()),this,SLOT(spShShow()));
    clWindow->setWindowTitle(trUtf8("Клиенты"));
    clWindow->showMaximized();

}

void MainWindow::spShShow()
{
    QWidget *wgt = new QWidget();
    mdiArea->addSubWindow(wgt);
    wgt->show();
}


Скриншот:
Прикрепленное изображение


Сообщение отредактировал bynet - 2.11.2010, 12:17
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
bynet
  опции профиля:
сообщение 2.11.2010, 14:26
Сообщение #2


Студент
*

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

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




Репутация:   0  


ClientWindow унаследован от QMainWindow. У него есть тул бар. по нажатие по которому должно поверх отображаться окно не навесь экран, чтобы я мог вносить данные

#include <QtGui>
#include "clientwindow.h"

ClientWindow::ClientWindow()
{


    db = QSqlDatabase::addDatabase("QIBASE");
    db.setHostName("localhost");
    db.setDatabaseName("D:\\Data\\data.fdb");
    db.setUserName("sysdba");
    db.setPassword("masterkey");
    db.open();
    model = new QSqlTableModel();
    model->setTable("contragent");
    model->select();

    model->setHeaderData(0, Qt::Horizontal, trUtf8("№"));
    model->setHeaderData(1, Qt::Horizontal, trUtf8("Название"));
    model->setHeaderData(2, Qt::Horizontal, trUtf8("Адрес"));
    model->setHeaderData(3, Qt::Horizontal, trUtf8("УНН"));
    model->setHeaderData(4, Qt::Horizontal, trUtf8("Счет"));
    model->setHeaderData(5, Qt::Horizontal, trUtf8("Банк"));
    model->setHeaderData(6, Qt::Horizontal, trUtf8("МФО"));
    model->setHeaderData(7, Qt::Horizontal, trUtf8("ОКПО"));

    view = new QTableView();
    view->setModel(model);

    view->setSelectionBehavior(QAbstractItemView::SelectRows);
    view->horizontalHeader()->setResizeMode(QHeaderView::Stretch);


    setCentralWidget(view);


    createActions();
    createToolBars();





}

ClientWindow::~ClientWindow()
{

    db.close();

}

void ClientWindow::createActions()
{
    add = new QAction(QIcon("/images/client_add.png"),trUtf8("Добавить"),this);
    connect(add,SIGNAL(triggered()),this,SLOT(addAct()));

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

    edit = new QAction(QIcon("/images/client_edit.png"),trUtf8("Добавить"),this);
    connect(edit,SIGNAL(triggered()),this,SLOT(editAct()));

    find = new QAction(QIcon("/images/client_find.png"),trUtf8("Удалить"),this);
    connect(find,SIGNAL(triggered()),this,SLOT(findAct()));
}

void ClientWindow::createToolBars()
{
    reActions = addToolBar(trUtf8("Действия"));
    reActions->addAction(add);
    reActions->addAction(del);
    reActions->addAction(edit);
    reActions->addAction(find);
}


И в главном окне MainWindow я устанавливаю в центральный виджет mdiarea. И потом туда понажатию кнопки запихиваю ClientWindoW, а уже по надатии кнопки в clientwindow должно поверх появлятся окно. Может у меня подход неправильный?

Сообщение отредактировал bynet - 2.11.2010, 14:27
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


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


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




RSS Текстовая версия Сейчас: 3.12.2024, 5:13