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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Проблема с добовлением виджета без компоновщика  (Прочитано 2313 раз)
StLynx
Гость
« : Апрель 04, 2014, 09:53 »

Доброго времени суток.
Объясните дураку почему не добавляется кнопка?

Код:
#include <QWidget>
#include <QPushButton>

class Window : public QWidget
{
    Q_OBJECT

public:
    explicit Window(QWidget *parent = 0) : QWidget(parent) { }

    void add()
    {
        QPushButton * c = new QPushButton(this);
        c->setGeometry(200, 200, 100, 100);
    }
};

Код:
#include <QApplication>
#include "window.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Window w;

    QPushButton * b = new QPushButton(&w);
    b->setGeometry(0, 0, 100, 100);

    QObject::connect(b, &QPushButton::clicked, &w, &Window::add);

    w.showFullScreen();

    return a.exec();
}
Записан
VPS
Гость
« Ответ #1 : Апрель 04, 2014, 10:57 »

Попробуйте в методе "add" добавить "c->show()". Но лучше (наверное) использовать layout-ы...
Записан
StLynx
Гость
« Ответ #2 : Апрель 04, 2014, 11:56 »

Попробуйте в методе "add" добавить "c->show()". Но лучше (наверное) использовать layout-ы...

И ведь точно! Спасибо большое! Оказывается виджет при вызове метода show() вызывает
этот метод и у своих "чайлдов", поэтому когда я добавлял другую кнопку до вызова "w.showFullScreen();"
она отрисовывалась и без show().

З.Ы. иногда layout'ы не очень удобны, например, когда главное окно не должно менять размер, а
виджеты должны иметь фиксированную позицию и размер.
Записан
vizir.vs
Гость
« Ответ #3 : Апрель 07, 2014, 09:06 »

Попробуйте в методе "add" добавить "c->show()". Но лучше (наверное) использовать layout-ы...

И ведь точно! Спасибо большое! Оказывается виджет при вызове метода show() вызывает
этот метод и у своих "чайлдов", поэтому когда я добавлял другую кнопку до вызова "w.showFullScreen();"
она отрисовывалась и без show().

З.Ы. иногда layout'ы не очень удобны, например, когда главное окно не должно менять размер, а
виджеты должны иметь фиксированную позицию и размер.

Если хочешь зафиксировать размер то использую setFixedSize.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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