Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: serg_yl от Октябрь 14, 2010, 12:21



Название: Координаты QHBoxLayout...?
Отправлено: serg_yl от Октябрь 14, 2010, 12:21
3 кнопки, созданные в менеджере компоновки (горизонтальное размещение).
Код:
#include <QtGui/QApplication>
#include "widget.h"
#include <QPushButton>
#include <QTextCodec>
#include <QHBoxLayout>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("Windows-1251"));

    QPushButton* sozdat = new QPushButton ("Создать...");
sozdat->setGeometry(10, 40, 180, 40);
    QPushButton* ydalit = new QPushButton ("Удалить объекты... / Очистить память");
    QPushButton* close = new QPushButton ("Закрыть");

    QHBoxLayout* phbxLayout = new QHBoxLayout;

    phbxLayout->setMargin(10);
    phbxLayout->setSpacing(20);
    phbxLayout->addWidget(sozdat);
    phbxLayout->addWidget(ydalit);
    phbxLayout->addWidget(close);


    w.setLayout(phbxLayout);
    w.setWindowFlags(Qt::Window|Qt::WindowMinimizeButtonHint);
    w.setWindowTitle("Задача 2 - Вариант 10");
    w.resize(700,400);
    w.show();

    return a.exec();
}
Как изменить координаты этого блока кнопок, так чтобы они были в низу главного окна?


Название: Re: Координаты QHBoxLayout...?
Отправлено: voral от Октябрь 14, 2010, 14:12
Перед их добавлением phbxLayout->addStretch();


Название: Re: Координаты QHBoxLayout...?
Отправлено: Kolobok от Октябрь 14, 2010, 14:17
void QBoxLayout::addWidget ( QWidget * widget, int stretch = 0, Qt::Alignment alignment = 0 )


Название: Re: Координаты QHBoxLayout...?
Отправлено: serg_yl от Октябрь 14, 2010, 16:30
voral - масть не понял, вставляю то что ты написал, у меня кнопки в право уходят... Не понятно... ???
Kolobok - поясни пожалуйста куда это строку вставить чтобы было корректно?


Название: Re: Координаты QHBoxLayout...?
Отправлено: Kolobok от Октябрь 14, 2010, 16:58
Ты же этот метод уже использовал. Только с параметрами по умолчанию. Прочти описание флага Qt::Alignment. И все станет понятно.


Название: Re: Координаты QHBoxLayout...?
Отправлено: voral от Октябрь 14, 2010, 18:05
voral - масть не понял, вставляю то что ты написал, у меня кнопки в право уходят... Не понятно... ???
упс. Прошу прощения пропустил мимо ушей что горизонтальный блок.
Тогда создаешь вертикальный блок и в него добавляешь сначла addStretch()  а потом addLayout(phbxLayout);
и уже этот блок отдаешь в виджет

Хотя вариант который предложил kolobok тебе наверно лучше подойдет.


Название: Re: Координаты QHBoxLayout...?
Отправлено: serg_yl от Октябрь 14, 2010, 19:45
Ну вообще зашел в тупик...
Пишу строчку.
Код:
phbxLayout->addWidget(sozdat,0,Qt::AlignBottom=0x0040);
В ответ ошибка, Шvalue required as left operand of assignment.
Где закралась ошибка?... ???


Название: Re: Координаты QHBoxLayout...?
Отправлено: BRE от Октябрь 14, 2010, 19:49
Здесь:
Qt::AlignBottom=0x0040


Название: Re: Координаты QHBoxLayout...?
Отправлено: serg_yl от Октябрь 14, 2010, 19:53
BRE - Спасибо!!!
Всем спасибо за ваши ответы!
P.S.
Отличный форум! Респект тем людям которые организовали его! :)


Название: Re: Координаты QHBoxLayout...?
Отправлено: serg_yl от Октябрь 14, 2010, 21:35
Пишу сюда, дабы не засорять форум пустяковыми вопросами...
Эх... Сигналы и слоты...

в Mail.cpp соединяю...
Код:
QObject::connect(&close_wid,SIGNAL(cliked()),&a,SLOT(quit()));

В Widget.h объявил.
Код:
class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = 0);
    ~Widget();

public slots:
   void quit();

signals:
    void cliked();

};
И на конец в widget.cpp определил как:
Код:
void Widget::quit()//Закрытие программы
{
    emit quit();
}
В чем ошибка, снова каша в голове... :'(


Название: Re: Координаты QHBoxLayout...?
Отправлено: serg_yl от Октябрь 15, 2010, 09:28
Вопрос снят, нашел ошибку.