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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: И как же сделать такое...  (Прочитано 2570 раз)
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);

ЗЫ. сори за быдло код
Записан
Rem Norton
Гость
« Ответ #1 : Декабрь 14, 2011, 00:10 »

Подсказка: Size policy. Ну и про QSpacerItem почитать не вредно.

В документации все описано.

P.S. А формы удобнее всего создавать в режиме дизайна.
Записан
antonio
Гость
« Ответ #2 : Декабрь 14, 2011, 00:34 »

спасибо, буду читать тогда документацию Улыбающийся
про формы полностью согласен, просто решил опробовать и такое создание Улыбающийся
Записан
antonio
Гость
« Ответ #3 : Декабрь 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 кнопки так и остаются в стороне. Какие же тогда опции надо использовать?
Записан
Rem Norton
Гость
« Ответ #4 : Декабрь 14, 2011, 20:10 »

Fixed, ну и SpacerItem в придачу. Кстати эти все вещи в литературе довольно подробно описаны. У того же Шлее. Рекомендую прочесть.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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