Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > расположение кнопки.


Автор: duckich 19.4.2009, 15:17
С Qt вообще не знаком, только начинаю изучать. Времени самому искать не особо много.

Как поместить кнопку именно туда куда я хочу и задать размер кнопки? И ещё я хочу чтоб не кнопка была, а просто некая область фона стала как кнопка.

Знаю, что надо засунуть 3 кнопки в Вертикальный лейаут, но не знаю как его размер задать и координаты расположения, а также кнопки при внесении в лейаут становятся уже чем были(в Qt дизайнере); тогда как, если возможно перемещение и уменьшение лейаута, отдельно задавать размер кнопок. Или скажите свои соображения, если мои не верны.
пока что у меня только так:

Код

#include <QtGui/QApplication>
#include "project.h"
#include <QtGui>

// ----------------------------------------------------------------------
int main(int argc, char** argv)
{
    QApplication app(argc, argv);
    QWidget      wgt;

    QWidget* pwgt2 = new QWidget(&wgt);
    QPalette pal2;
    pal2.setBrush(pwgt2->backgroundRole(), QBrush(QPixmap("Bomb1.bmp")));
    pwgt2->setPalette(pal2);
    pwgt2->resize(563, 447);
    pwgt2->setAutoFillBackground(true);
    wgt.setFixedSize ( 563, 447);

    QPushButton* pcmdN = new QCommandLinkButton("&Play game");

    QPushButton* pcmdT = new QCommandLinkButton("&Options");
   
    QPushButton* pcmdF = new QCommandLinkButton("&Instructions");
    
       //Layout setup
    QVBoxLayout* pvbxLayout = new QVBoxLayout;
    pvbxLayout->addWidget(pcmdN);    
    pvbxLayout->addWidget(pcmdT);
    pvbxLayout->addWidget(pcmdFl); 
    wgt.setLayout(pvbxLayout);
    wgt.show();




P.S: Не хочу пользоваться дизайнером, тк ближе написать код и посмотреть что получается.

Автор: SABROG 19.4.2009, 20:09
Цитата(duckich @  19.4.2009,  15:17 Найти цитируемый пост)
Как поместить кнопку именно туда куда я хочу и задать размер кнопки?

Код

button->setGeometry(x, y, width, height
);

Цитата(duckich @  19.4.2009,  15:17 Найти цитируемый пост)
И ещё я хочу чтоб не кнопка была, а просто некая область фона стала как кнопка.

Код

void QWidget::mousePressEvent ( QMouseEvent * event )
void QWidget::mouseReleaseEvent ( QMouseEvent * event )
void QWidget::keyPressEvent ( QKeyEvent * event )
void QWidget::keyReleaseEvent ( QKeyEvent * event )
и т.д...



Цитата(duckich @  19.4.2009,  15:17 Найти цитируемый пост)
Знаю, что надо засунуть 3 кнопки в Вертикальный лейаут, но не знаю как его размер задать и координаты расположения

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

Автор: duckich 19.4.2009, 21:41
Цитата

button->setGeometry(x, y, width, height);


Может я что-то не понял, но я сделал так:

Код

QPushButton* pcmdNormal = new QPushButton("&Play game");
    pcmdNormal->setGeometry(110, 90, 75, 23);


А чтобы показать кнопку надо её в лейаут запихнуть или он вообще не нужен и просто 3 кнопки разместить в трёх разных местах.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)