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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: задание CSS border в QTabWidget  (Прочитано 7787 раз)
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« : Август 18, 2009, 12:25 »

Раз уж подняли тему про QTabWidget... Нашёл баг при задании бордюра через CSS для QTabWidget. Css такой:

Код
CSS
QTabWidget::pane
{
   border-image: url(:/border.png);
   border-width: 14px 14px 14px 14px;
}
 

Кажется всё проще некуда. Но. Минимально допустимый размер (а точнее высота) содержимого каждой вкладки уменьшается. Т.е. если на одной вкладке есть два вертикально расположенных lineEdit-a, то с использованием этого CSS я могу сжать виджет так, что lineEdit-ы станут высотой пикселей 5. Это ужасно неудобно. Это можно как-то поправить?

P.S. Qt 4.5.2, Debian Lenny.
Записан
BRE
Гость
« Ответ #1 : Август 18, 2009, 12:33 »

А если min-height установить?

Код
CSS
QTabWidget::pane
{
   border-image: url(:/border.png);
   border-width: 14px 14px 14px 14px;
   min-height: 32px;
}
 
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #2 : Август 18, 2009, 12:39 »

фига ещё в том, что у QLineEdit вертикальная политика размера - Fixed. Как он вообще может сжиматься по вертикали  Непонимающий
« Последнее редактирование: Август 18, 2009, 12:41 от AX » Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #3 : Август 18, 2009, 12:43 »

А если min-height установить?

Код
CSS
QTabWidget::pane
{
   border-image: url(:/border.png);
   border-width: 14px 14px 14px 14px;
   min-height: 32px;
}
 


не пойдёт, я не знаю какой минимальный размер будет у QTabWidget, их же несколько может быть - у одной это 32 у другой 80.
Записан
BRE
Гость
« Ответ #4 : Август 18, 2009, 14:33 »

Решил посмотреть у себя в дизайнере....
У меня QLineEdit'ы не сжимаются, все нормально. Без всяких min-height. Непонимающий

qt-4.5.2-1.fc10.i386
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #5 : Август 18, 2009, 16:52 »

Решил посмотреть у себя в дизайнере....
У меня QLineEdit'ы не сжимаются, все нормально. Без всяких min-height. Непонимающий

qt-4.5.2-1.fc10.i386


попробуй вот такой пример

Код
C++ (Qt)
#include <QtGui>
 
int main(int argc, char *argv[])
{
   QApplication app(argc, argv);
 
   QTabWidget *w = new QTabWidget;
 
   QWidget *p = new QWidget;
 
   QGridLayout *g = new QGridLayout;
   p->setLayout(g);
 
   QLineEdit *l;
 
   l = new QLineEdit;
   l->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
   g->addWidget(l, 0, 0);
 
   l = new QLineEdit;
   l->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
   g->addWidget(l, 1, 0);
 
   g->addWidget(new QLineEdit, 1, 0);
   g->addItem(new QSpacerItem(1, 1, QSizePolicy::Fixed, QSizePolicy::Expanding), 2, 0);
 
   w->addTab(p, "page1");
 
   w->show();
 
   return app.exec();
}
 
Записан
BRE
Гость
« Ответ #6 : Август 18, 2009, 17:16 »

попробуй вот такой пример
А вот если QTabWidget расположить на QWidget все нормализуется.
Пока не соображу, что происходит....
Код
C++ (Qt)
#include <QtGui>
 
int main(int argc, char *argv[])
{
   QApplication app(argc, argv);
 
QWidget *mainWidget = new QWidget;
QVBoxLayout *mainLayout = new QVBoxLayout;
mainWidget->setLayout( mainLayout );
 
   QTabWidget *w = new QTabWidget( mainWidget );
mainLayout->addWidget( w );
 
   QWidget *p = new QWidget;
 
   QGridLayout *g = new QGridLayout;
   p->setLayout(g);
 
   QLineEdit *l;
 
   l = new QLineEdit;
//    l->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
   g->addWidget(l, 0, 0);
 
   l = new QLineEdit;
//    l->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
   g->addWidget(l, 1, 0);
 
//    g->addWidget(new QLineEdit, 1, 0);
   g->addItem(new QSpacerItem(1, 1, QSizePolicy::Fixed, QSizePolicy::Expanding), 2, 0);
 
   w->addTab(p, "page1");
 
   mainWidget->show();
 
   return app.exec();
}
 
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #7 : Август 18, 2009, 18:03 »

попробуй вот такой пример
А вот если QTabWidget расположить на QWidget все нормализуется.
Пока не соображу, что происходит....

да, и теперь примени тот стиль что я показал выше  Смеющийся Результат опять будет неправильным - lineEdit-ы потеряют свою минимальную высоту:



Код
C++ (Qt)
#include <QtGui>
 
int main(int argc, char *argv[])
{
   QApplication app(argc, argv);
 
   QWidget *mainWidget = new QWidget;
   QVBoxLayout *mainLayout = new QVBoxLayout;
   mainWidget->setLayout( mainLayout );
 
   QTabWidget *w = new QTabWidget( mainWidget );
   w->setStyleSheet(""
"QTabWidget::pane"
"{"
"    border-image: url(border.png);"
"    border-width: 14px 14px 14px 14px;"
"}    ");
   mainLayout->addWidget( w );
 
   QWidget *p = new QWidget;
 
   QGridLayout *g = new QGridLayout;
   p->setLayout(g);
 
   QLineEdit *l;
 
   l = new QLineEdit;
   g->addWidget(l, 0, 0);
 
   l = new QLineEdit;
   g->addWidget(l, 1, 0);
 
   g->addItem(new QSpacerItem(1, 1, QSizePolicy::Fixed, QSizePolicy::Expanding), 2, 0);
 
   w->addTab(p, "page1");
 
   mainWidget->show();
 
   return app.exec();
}
 
« Последнее редактирование: Август 18, 2009, 18:05 от AX » Записан
BRE
Гость
« Ответ #8 : Август 18, 2009, 18:23 »

да, и теперь примени тот стиль что я показал выше  Смеющийся Результат опять будет неправильным - lineEdit-ы потеряют
У меня все нормально.
Я styleSheet устанавливал и для w и для mainWidget.
 Непонимающий
« Последнее редактирование: Август 18, 2009, 18:25 от BRE » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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