Название: И как же сделать такое...
Отправлено: antonio от Декабрь 13, 2011, 23:48
Доброй всем ночи. Недавно начал изучать Qt и сейчас столкнулся с проблемой: реализую интерфейс со "вкладками" с помощью Layout'ов. В одну из вкладок добавляю некий текст и две кнопки. Но по неизвестной мне причине, кнопки сдвигаются от левой границы. В чем может быть дело? вот код: QSignalMapper *m_main = new QSignalMapper(this); QSignalMapper *m_profile = new QSignalMapper(this); QSignalMapper *m_settings = new QSignalMapper(this);
setMaximumSize(1000, 900); setMinimumSize(300, 250); resize(400, 400);
setWindowTitle("YProject"); QVBoxLayout *mainLayout = new QVBoxLayout; mainLayout->setMargin(2); mainLayout->setSpacing(4);
QFont displayFont; displayFont.setPixelSize(100);
QTabWidget *tabs = new QTabWidget;
QWidget *mainTab = new QWidget; QFormLayout *mainTabLayout = new QFormLayout;
mainTabLayout->setSizeConstraint(QLayout::SetFixedSize); mainTabLayout->setSpacing(00);
mainTabLayout->addRow("Name ", new QLabel);
QPushButton *button1 = new QPushButton("but1"); mainTabLayout-> addWidget(button1);
QPushButton *button2 = new QPushButton("but2"); mainTabLayout-> addWidget(button2);
mainTab->setLayout(mainTabLayout); tabs->addTab(mainTab, "Main");
//вкладка Профиль
QWidget *profileTab = new QWidget; QFormLayout *profileTabLayout = new QFormLayout; profileTabLayout->setMargin(4); profileTabLayout->setSpacing(0);
profileTab->setLayout(profileTabLayout); tabs->addTab(profileTab, "Profile");
mainLayout->addWidget(tabs); setCentralWidget(new QWidget); centralWidget()->setLayout(mainLayout);
//вкладка Настройки
QWidget *settingsTab = new QWidget; QFormLayout *settingsTabLayout = new QFormLayout; settingsTabLayout->setMargin(4); settingsTabLayout->setSpacing(0);
settingsTab->setLayout(settingsTabLayout); tabs->addTab(settingsTab, "Settings");
mainLayout->addWidget(tabs); setCentralWidget(new QWidget); centralWidget()->setLayout(mainLayout);
ЗЫ. сори за быдло код
Название: Re: И как же сделать такое...
Отправлено: Rem Norton от Декабрь 14, 2011, 00:10
Подсказка: Size policy. Ну и про QSpacerItem почитать не вредно.
В документации все описано.
P.S. А формы удобнее всего создавать в режиме дизайна.
Название: Re: И как же сделать такое...
Отправлено: antonio от Декабрь 14, 2011, 00:34
спасибо, буду читать тогда документацию :) про формы полностью согласен, просто решил опробовать и такое создание :)
Название: Re: И как же сделать такое...
Отправлено: antonio от Декабрь 14, 2011, 01:12
чего то я все таки не понимаю... использую такую конструкцию: QPushButton *button1 = new QPushButton("but1"); button1->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Maximum);
QPushButton *button2 = new QPushButton("but2"); button2->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Maximum);
При таком использовании QSizePolicy получается, что кнопки как будто прячутся за невидимую стенку и видно только их краи (несколько пикселей). При попытке использовать другие опции для QSizePolicy кнопки так и остаются в стороне. Какие же тогда опции надо использовать?
Название: Re: И как же сделать такое...
Отправлено: Rem Norton от Декабрь 14, 2011, 20:10
Fixed, ну и SpacerItem в придачу. Кстати эти все вещи в литературе довольно подробно описаны. У того же Шлее. Рекомендую прочесть.
|