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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как QWidget вставить в рабочее поле окна  (Прочитано 4319 раз)
VVN
Чайник
*
Offline Offline

Сообщений: 52


Просмотр профиля
« : Сентябрь 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 Как этот каркас вставить в рабочее поле окна и его нельзя было закрыть?

Понимаю что вопросы очень примитивные, но что, то уперся, причем конкретно  Подмигивающий



Записан
popper
Гость
« Ответ #1 : Сентябрь 01, 2011, 16:38 »

Тебе следует познакомится с менеджером компоновки

http://doc.qt.nokia.com/latest/widgets-and-layouts.html
Записан
SeverusSnape
Гость
« Ответ #2 : Сентябрь 01, 2011, 16:48 »

Цитировать
MainWindow::MainWindow(QWidget *parent)
      : QMainWindow(parent)
{
    createActions();
   createMenus();
   createToolBars();
        createStatusBar();

   
    plot = new QwtPlot(this);
setCentralWidget(plot);
   
}
Записан
SeverusSnape
Гость
« Ответ #3 : Сентябрь 01, 2011, 16:49 »

Ну и как Вам указали в ответе выше - обратите внимание на Qlayout и его разновидности
Записан
VVN
Чайник
*
Offline Offline

Сообщений: 52


Просмотр профиля
« Ответ #4 : Сентябрь 01, 2011, 16:57 »

setCentralWidget(plot);
 

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

Записан
SeverusSnape
Гость
« Ответ #5 : Сентябрь 01, 2011, 17:05 »

Да ну, не за что. Главное обратите внимание на QGridLayout
Записан
VVN
Чайник
*
Offline Offline

Сообщений: 52


Просмотр профиля
« Ответ #6 : Сентябрь 01, 2011, 17:23 »

Главное обратите внимание на QGridLayout

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

Тут ключевое слово было setCentralWidget(plot);  Улыбающийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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