Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Qt
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
TheThe
6 / 6 / 4
Регистрация: 26.06.2015
Сообщений: 83
#1

Главное окно приложения

26.06.2015, 22:46. Просмотров 980. Ответов 10
Метки нет (Все метки)

Всем Доброго времени суток!
Прошу помощи в создании главного окна приложения. Я пытаюсь создать что-то похожее на стандартный установщик приложений windows, чтобы можно было нажимать на кнопку, какую-нибудь, и чтобы оставалось это же окно, в этих же размерах, но менялось содержимое, с возможностью навигации( назад, вперед, "вернуться на главную страницу").

Пробовал реализовать вот так:
Пример

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
MW::MW(QWidget *parent):QMainWindow(parent)
{
    bt1=new QPushButton(tr("Window-1"));
    bt2=new QPushButton(tr("Window-2"));
 
    QHBoxLayout *ML=new QHBoxLayout;
    ML->addWidget(bt1);
    ML->addWidget(bt2);
 
    wid=new Add;                               //Это виджет с новым содержимым главного окна.
 
    QWidget *wg=new QWidget;
    wg->setLayout(ML);
 
    setCentralWidget(wg);
    connect(bt1,SIGNAL(clicked()),this,SLOT(NewWin()));
 
}
 
void MW::NewWin()
{
    QHBoxLayout *ML=new QHBoxLayout;
    ML->addWidget(wid);
 
    QWidget *w=new QWidget;
 
    QPushButton *b=new QPushButton;
    ML->addWidget(b);
    w->setLayout(ML);
    setCentralWidget(w);
 
}

Но пока что-то не очень получатся. Про QStackedLaouyt вкурсе, но там нужен QListWidget, список этих самих окон, а нужно чтобы навигация происходила за счет кнопок. Благодарю!

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

0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.06.2015, 22:46
Ответы с готовыми решениями:

Скрыть главное окно
в конструкторе виджета (главного окна) проверяется условие, и если условие...

Дочернее главное окно
У меня есть 2 формы. Как мне открыть одну форму обычным способом, а вторую...

Передача данных из второго окна в главное окно
Добрый день! Передаю данные из главного окна во второе окно: myform =...

Установить по нажатию QPushButton класса элементов на главное окно
Всем привет! Есть определенный класс элементов, под этим имеется ввиду:...

Встраивание программы в окно приложения qt
Подскажите, пожалуйста! Можно ли внешнее приложение не просто запускать...

10
alexey_rage
590 / 390 / 79
Регистрация: 23.10.2013
Сообщений: 1,143
26.06.2015, 23:26 #2
Ну а QStackedWidget не подходит что-ли?
Указатели на виджеты храним в массиве, а по кнопкам устанавливаем нужный видждет.
1
TheThe
6 / 6 / 4
Регистрация: 26.06.2015
Сообщений: 83
27.06.2015, 01:25  [ТС] #3
Так там же нужно создавать QListWidget или QComboBox для навигации по виджетам, а как сделать чтобы через кнопку было управление??
0
alexu_007
142 / 153 / 34
Регистрация: 29.05.2015
Сообщений: 1,100
27.06.2015, 08:01 #4
Можно по необходимости виджеты делать невидимыми или видимыми, менять размер и по разному располагать на экране. А обработчики кнопок делать, чтобы их функционал менялся в зависимости от ключа по swith-case. Допустим ключ 1 - на экране картинка в label и кнопка "далее" - нажимаем - ключ меняется на 2 - картинка убирается, нужные виджеты расставляются в нужных местах и делаются видимыми - ну и так далее. Вроде понятно?
1
TheThe
6 / 6 / 4
Регистрация: 26.06.2015
Сообщений: 83
27.06.2015, 14:05  [ТС] #5
А вот так, нормально?
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
MW::MW(QWidget *parent):QMainWindow(parent)
{
    bt1=new QPushButton(tr("Window-1"));
    bt2=new QPushButton(tr("Window-2"));
 
    QHBoxLayout *ML=new QHBoxLayout;
    ML->addWidget(bt1);
    ML->addWidget(bt2);
 
    wid=new Add;                               //Это виджет с новым содержимым главного окна.
 
    QWidget *wg=new QWidget;
    wg->setLayout(ML);
 
    st=new QStackedWidget;
    st->addWidget(wg);
    st->addWidget(wid);
 
    setCentralWidget(st);
    connect(bt1,SIGNAL(clicked()),this,SLOT(NewWin()));
    connect(wid->bb,SIGNAL(clicked()),this,SLOT(RetWin()));     //a->bb, bb это кнопка на нового окна, при нажатии на нее вернемся к начальному окну, по-типу "вернуться на гл. страницу".
}
 
void MN::RetWin()
{
    st->setCurrentIndex(0);
}
 
 
void MW::NewWin()
{
    st->setCurrentIndex(1);
}

Приведите пожалуйста пример простой, с использованием switch/case, а то не очень понятно, спасибо.
0
yarko
64 / 64 / 18
Регистрация: 31.03.2015
Сообщений: 253
27.06.2015, 15:45 #6
Смотрите QWizard
1
TheThe
6 / 6 / 4
Регистрация: 26.06.2015
Сообщений: 83
27.06.2015, 17:42  [ТС] #7
QWizard не то немного. Хотелось бы увидеть пример с switch/case, пожалуйста.
0
Воротислав
124 / 102 / 27
Регистрация: 25.02.2010
Сообщений: 451
29.06.2015, 08:09 #8
TheThe, вам посоветовали QStackedWidget. Посмотрите повнимательнее, это не QStackedLayout. В дизайнере просто разместите и посмотрите что это. Там есть кнопки перехода.
1
alexu_007
142 / 153 / 34
Регистрация: 29.05.2015
Сообщений: 1,100
29.06.2015, 08:38 #9
Лучший ответ Сообщение было отмечено TheThe как решение

Решение

Цитата Сообщение от TheThe Посмотреть сообщение
QWizard не то немного. Хотелось бы увидеть пример с switch/case, пожалуйста.
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
// кнопка "далее"
void Widget::MyEventPressButton()
{
    switch(KeyNumberOperation)
    {
        case(0):
        {
             // первое нажатие на кнопку далее
             // выполняем нужные действия
             ......
             ......
             ......
             KeyNumberOperation++;
             break();
         }
 
        case(1):
        {
             // второе нажатие на кнопку далее
             // выполняем нужные действия
             ......
             ......
             ......
             KeyNumberOperation++;
             break();
         }
 
        case(2):
        {
             // третье нажатие на кнопку далее
             // выполняем нужные действия
             ......
             ......
             ......
             KeyNumberOperation++;
             break();
         }
    }
как то так...
1
yarko
64 / 64 / 18
Регистрация: 31.03.2015
Сообщений: 253
29.06.2015, 09:37 #10
Кстати да, верное замечания. QWizard позволяет вручную управлять какая страница будет следующей, в зависимости от введенных данных.
1
TheThe
6 / 6 / 4
Регистрация: 26.06.2015
Сообщений: 83
29.06.2015, 14:20  [ТС] #11
Всем спасибо за ответы! Стало более-менее понятно.
0
29.06.2015, 14:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.06.2015, 14:20

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

Как прижать окно MainWindow и окно второе к левому верхнему углу экрана?
Имеется MainWindow (которое по умолчанию) в приложении. Имеется созданное окно...

Написать пример программы, с использованием QStackedWidget, чтобы было главное меню
может кто-нибудь написать пример программы, с использованием QStackedWidget ,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru