Russian Qt Forum

Qt => Вопросы новичков => Тема начата: VVN от Сентябрь 01, 2011, 16:30



Название: Как QWidget вставить в рабочее поле окна
Отправлено: VVN от Сентябрь 01, 2011, 16:30
Уважаемые господа,  здравствуйте.

Я совсем новичок в QT.

Соответсвенно и вопросы не совсем :)

Мне нужно сделать программную оболочку, которая принимает поток данных с USB протокол hid. Эти данные соответствующем образом обрабатываются и отображаются на экране. Несколько осциллоскопов + индикаторы.

В качестве плоттеров планирую использовать библиотеку QWT.

Сама программа стандартное Win окно с заголовком, меню, панелью инструментов и статусбар.

Это все взял из примеров и модифицировал под свою задачу все работает.

Построение программы стандартно из примеров.

Функция main в которой создается экземпляр класса MainWindow

Код:
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
    createActions();
createMenus();
createToolBars();
        createStatusBar();

    // Тут все работает посредине экрана диалоговое окно с plot

    dlg = new QDialog(this);
    plot = new QwtPlot(dlg);
    dlg->show();
}

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

Ну думаю нужно создать просто QWitget вместо QDialog и отобразить его.

Вот уже три дня экспериментирую.

Как говорится, читаю книги форумы а вижу ….

Если взять следующий код

Код:
        tabwg = new QTabWidget(this);
        tabwg->addTab(plot, tr("Tab 1"));
        tabwg->show();

То на экране виден свернутый tab который наползает на на заголовок меню и панель задач.
Если ему сделать resize то он увеличивается но так и остается на месте.
Пробовал много вариантов виджетов  и с размещением в  VBox-ах.
Результаты от открытия в параллельном окне до предыдущего результата.

Подскажите пожалуйста
1 Какой виджет мне использовать что бы на нем собрать каркас моего окна?
2 Как этот каркас вставить в рабочее поле окна и его нельзя было закрыть?

Понимаю что вопросы очень примитивные, но что, то уперся, причем конкретно  ;)





Название: Re: Как QWidget вставить в рабочее поле окна
Отправлено: popper от Сентябрь 01, 2011, 16:38
Тебе следует познакомится с менеджером компоновки

http://doc.qt.nokia.com/latest/widgets-and-layouts.html
 (http://doc.qt.nokia.com/latest/widgets-and-layouts.html)


Название: Re: Как QWidget вставить в рабочее поле окна
Отправлено: SeverusSnape от Сентябрь 01, 2011, 16:48
Цитировать
MainWindow::MainWindow(QWidget *parent)
      : QMainWindow(parent)
{
    createActions();
   createMenus();
   createToolBars();
        createStatusBar();

   
    plot = new QwtPlot(this);
setCentralWidget(plot);
   
}


Название: Re: Как QWidget вставить в рабочее поле окна
Отправлено: SeverusSnape от Сентябрь 01, 2011, 16:49
Ну и как Вам указали в ответе выше - обратите внимание на Qlayout и его разновидности


Название: Re: Как QWidget вставить в рабочее поле окна
Отправлено: VVN от Сентябрь 01, 2011, 16:57
setCentralWidget(plot);
 

Вы волшебник, спасибо огромнейшее.



Название: Re: Как QWidget вставить в рабочее поле окна
Отправлено: SeverusSnape от Сентябрь 01, 2011, 17:05
Да ну, не за что. Главное обратите внимание на QGridLayout


Название: Re: Как QWidget вставить в рабочее поле окна
Отправлено: VVN от Сентябрь 01, 2011, 17:23
Главное обратите внимание на QGridLayout

Я на протяжении этих дней/ночей через это прошел.
Основной смысл Layout понятен и ими нужно и буду пользоваться.

Тут ключевое слово было setCentralWidget(plot);  :)