Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 03.02.2013
Сообщений: 17

Не отображаются кнопки внутри QVBoxLayout

12.05.2013, 21:55. Показов 2634. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, уважаемые знатоки.=) Я пытаюсь написать программу, в которой наследую класс QMainWindow и пытаюсь разместить в нем кнопки с помощью QVBoxLayout.

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

мой заголовочный файл:
C++
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
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
 
#include<QObject>
#include<QMainWindow>
#include<QPushButton>
#include<QVBoxLayout>
 
class MainButton : public QMainWindow
 
{
    Q_OBJECT
 
public:
    explicit MainButton(QWidget *parent=0);
    QVBoxLayout *layout;
    QPushButton *button1;
    QPushButton *button2;
    QPushButton *button3;
public slots:
    void settext();
 
};
 
#endif // MAINWINDOW_H
мои методы:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include "mainWindow.h"
 
MainButton::MainButton(QWidget *parent): QMainWindow(parent)
{
    QPushButton *button1 = new QPushButton();
    QPushButton *button2 = new QPushButton();
    QPushButton *button3 = new QPushButton();
 
    QVBoxLayout *layout = new QVBoxLayout(parent);
     layout->addWidget(button1);
     layout->addWidget(button2);
     layout->addWidget(button3);
    this->setLayout(layout);
 
    QObject::connect(button1, SIGNAL(clicked()), this, SLOT(settext()));
    QObject::connect(button2, SIGNAL(clicked()), this, SLOT(settext()));
    QObject::connect(button3, SIGNAL(clicked()), this, SLOT(settext()));
 
}
 
void MainButton::settext()
{
    ((QPushButton*)sender())->setText("x");
}
и моя main():
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <QtGui/QApplication>
#include "mainWindow.h"
 
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    MainButton window;
 
    window.show();
    return app.exec();
 
}
Подскажите, пожалуйста, в чем моя ошибка. Спасибо заранее.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.05.2013, 21:55
Ответы с готовыми решениями:

QHBoxLayout внутри QVBoxLayout убрать растяжение
Заранее прошу прощения, если данная тема уже поднималась на форуме. Если я упустил данную тему, то пожалуйста киньте линк. Задача: ...

Изменения внутри метода класса не отображаются из main
Не писал на c++ уже около года. Сейчас пришлось вернуться. И в первые минуты работы возникла проблема, которая просто в тупик ставит. ...

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

11
Linux-оид
 Аватар для OLLEGATOR
120 / 69 / 9
Регистрация: 15.02.2011
Сообщений: 374
12.05.2013, 22:17
а если QVBoxLayout *layout сделать полем класса?
0
0 / 0 / 0
Регистрация: 03.02.2013
Сообщений: 17
12.05.2013, 22:32  [ТС]
оно же и есть полем класса. я объявляю его вместо с кнопками.
0
Linux-оид
 Аватар для OLLEGATOR
120 / 69 / 9
Регистрация: 15.02.2011
Сообщений: 374
12.05.2013, 22:56
зачем сдесь идёт персоздание переменных MainButton::MainButton(QWidget *parent): QMainWindow(parent) ?? ты уже создал как поля класса..а потом опять их объявляешь ?

а что если так
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include "mainWindow.h"
 
MainButton::MainButton(QWidget *parent): QMainWindow(parent)
{
    button1 = new QPushButton();
    button2 = new QPushButton();
    button3 = new QPushButton();
 
    layout = new QVBoxLayout(this);
     layout->addWidget(button1);
     layout->addWidget(button2);
     layout->addWidget(button3);
 
    QObject::connect(button1, SIGNAL(clicked()), this, SLOT(settext()));
    QObject::connect(button2, SIGNAL(clicked()), this, SLOT(settext()));
    QObject::connect(button3, SIGNAL(clicked()), this, SLOT(settext()));
 
}
Добавлено через 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
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
 
#include<QObject>
#include<QMainWindow>
#include<QPushButton>
#include<QVBoxLayout>
 
class MainButton : public QMainWindow
 
{
    Q_OBJECT
 
    QVBoxLayout *layout;
    QPushButton *button1;
    QPushButton *button2;
    QPushButton *button3;
 
public:
    explicit MainButton(QWidget *parent=0);
    
public slots:
    void settext();
 
};
 
#endif // MAINWINDOW_H
Добавлено через 3 минуты
http://www.codeprogress.com/cp... PushButton так же стоит глянуть... как образец некоторых вещей
0
0 / 0 / 0
Регистрация: 03.02.2013
Сообщений: 17
12.05.2013, 23:10  [ТС]
За ссылку спасибо, но проблема не исщезла. Если делать такую же обработку события для кнопки, которая вне разметки QVBoxLayout, то все работает.
0
Linux-оид
 Аватар для OLLEGATOR
120 / 69 / 9
Регистрация: 15.02.2011
Сообщений: 374
12.05.2013, 23:15
какая проблема!?
0
0 / 0 / 0
Регистрация: 03.02.2013
Сообщений: 17
12.05.2013, 23:19  [ТС]
не отображаются кнопки
0
Linux-оид
 Аватар для OLLEGATOR
120 / 69 / 9
Регистрация: 15.02.2011
Сообщений: 374
12.05.2013, 23:44
сюда исходник залей архивом...
0
0 / 0 / 0
Регистрация: 03.02.2013
Сообщений: 17
13.05.2013, 00:22  [ТС]
http://www.ex.ua/view_storage/401665865568
0
Linux-оид
 Аватар для OLLEGATOR
120 / 69 / 9
Регистрация: 15.02.2011
Сообщений: 374
13.05.2013, 00:36
http://www.ex.ua/view_storage/135440942421

Добавлено через 2 минуты
ты наследовал то что уже имеет layout. QWidget не имеет layout. Так всё ок
1
0 / 0 / 0
Регистрация: 03.02.2013
Сообщений: 17
13.05.2013, 01:51  [ТС]
Спасибо. НАследование QWidget вместо QMainWindow помогло. Но все же интересно, что значит, что QMainWindow уже имеет разметку, а QWidget - нет?
0
Linux-оид
 Аватар для OLLEGATOR
120 / 69 / 9
Регистрация: 15.02.2011
Сообщений: 374
13.05.2013, 02:24
именно так. варнинг об этом и писал
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.05.2013, 02:24
Помогаю со студенческими работами здесь

Не отображаются кнопки
подскажите что делаю не так почему кнопки не отоброжаются? &lt;div id=&quot;settings_deact_reasons&quot;&gt; &lt;div...

неправильно отображаются несколько ярлыков на рабочем столе (скриншот внутри)
причем в меню свойства ярлыка - отображается как и было

Примитивные вещи (не отображаются кнопки)
Я только начинаю изучать Java! Хочу создать безфункциональную панель с текстовым полем и кнопкой, но кнопки и текстового поля нет!!! Не...

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

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


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru