Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Настройка QGridLayout, высота колонок и ширина столбцов 
:(
    Опции темы
math64
Дата 1.2.2013, 22:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 23
Всего: 72



Пишу программу пасьянс. Хочу редактировать форму для пасьянса в дизайнере.
На форму Board вставляю QCardStackWidget, производные от QWidget (может лучше наследоваться от другого класса?)
В QCardStackWidget переопределяю методы sizeHint() и minimumSizeHint() { return game->cardSize(); }
Устанавливаю QGridLayout.
Board::resizeEvent(QResizeEvent *) вычисляю размер карты.
Например, для Паука - ширина 1/10 ширины формы за вычетом полей и промежутков.
Вызываю QGridLayout:: setMinumumRowHeight() для строк - и QGridLayout располагает виджеты как я хочу,
но при этом не позволяет уменьшать размеры формы.

PM   Вверх
_GRIN_
Дата 5.2.2013, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


одинокий падаван
**


Профиль
Группа: Участник
Сообщений: 272
Регистрация: 18.11.2007
Где: Калуга

Репутация: 6
Всего: 7



Цитата(math64 @  1.2.2013,  20:08 Найти цитируемый пост)
Устанавливаю QGridLayout.
Board::resizeEvent(QResizeEvent *) вычисляю размер карты.
Например, для Паука - ширина 1/10 ширины формы за вычетом полей и промежутков.
Вызываю QGridLayout:: setMinumumRowHeight() для строк - и QGridLayout располагает виджеты как я хочу,
но при этом не позволяет уменьшать размеры формы.


Ну так а чего ты хотел, ты по сути для Board (через его layout) задаёшь текущий размер как минимальный (по высоте) - следовательно по высоте его можно только увеличивать.



--------------------
Дорогу осилит идущий
PM MAIL Skype   Вверх
math64
Дата 5.2.2013, 19:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 23
Всего: 72



Я это понимаю. Но нельзя ли настроить грид по другому?
PM   Вверх
_GRIN_
Дата 6.2.2013, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


одинокий падаван
**


Профиль
Группа: Участник
Сообщений: 272
Регистрация: 18.11.2007
Где: Калуга

Репутация: 6
Всего: 7



Я не совсем понимаю, какого поведения ты хочешь добиться.
Я практически не пользуюсь дизайнером (за исключением стадии прототипа) - так что все финальные подгонки в коде.
Если в гриде надо расположить элементы как-то не стандартно (т.е. какие-то в клетках большего размера, какие-то меньшего), то просто при добавлении элемента в грид указываю rowSpan | columnSpan параметр.
Вот маленький пример.

Код

#include <QApplication>
#include <QGridLayout>
#include <QLabel>

class MyLabel : public QLabel
{
    int m_prefered_width;
    int m_prefered_height;
public:
    MyLabel( const QString& text,
             const int prefered_width,
             const int prefered_height )
        : QLabel( 0 )
        , m_prefered_width( prefered_width )
        , m_prefered_height( prefered_height )
    {
        setText( text );
        setFrameStyle( QFrame::Box | QFrame::Sunken );
        setAlignment( Qt::AlignCenter );
        setSizePolicy( QSizePolicy::Preferred, QSizePolicy::Preferred );
    }

    QSize sizeHint()  const
    {
        return QSize( m_prefered_height, m_prefered_height );
    }
};

int main( int argc, char** argv )
{
    QApplication app( argc, argv );

    QWidget main_window;

    QGridLayout*const grid = new QGridLayout( &main_window );

    grid->addWidget( new MyLabel( "1", 10, 10 ), 0, 0 );
    grid->addWidget( new MyLabel( "2", 10, 10 ), 0, 1 );
    grid->addWidget( new MyLabel( "3", 10, 10 ), 0, 2, 1, 2 );
    grid->addWidget( new MyLabel( "4", 10, 10 ), 1, 0 );
    grid->addWidget( new MyLabel( "5", 10, 90 ), 1, 1, 2, 2 );
    grid->addWidget( new MyLabel( "6", 10, 10 ), 1, 3 );
    grid->addWidget( new MyLabel( "7", 10, 10 ), 2, 0 );
    grid->addWidget( new MyLabel( "8", 10, 10 ), 2, 3 );
    grid->addWidget( new MyLabel( "9", 10, 10 ), 3, 0, 1, -1 );

    main_window.show();

    return app.exec();
}



P.S.
Думаю не сильно помог, но я правда не понимаю задачу


--------------------
Дорогу осилит идущий
PM MAIL Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0441 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.