crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> многострочный QLabel обрезается текст
Гость_Гость_*
сообщение 16.4.2009, 20:47
Сообщение #1





Гости








    


QLabel из дизайнера с атрибутом wordWrap. Когда запускается виджет все нормально, а если виджет в сплитере то при пересройке в несколько строк текст обрезается при недостаточном размере виджета. Текст клипируется окном высотой в которую 2 строки толком не влазят, у нижней нижняя часть букв подрезана. При запуске виджета отдельно можно сделать мышкой ресайз ширины чтоб текст занимал много строчек. В сплитере тоже можно увидеть, но он позволяет установить неправильную высоту.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Гость_*
сообщение 16.4.2009, 20:50
Сообщение #2





Гости








    


PS
точнее говоря при запуске виджета не удается сделать неправильный ресайз
QT 4.3.4
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
SABROG
  опции профиля:
сообщение 16.4.2009, 22:30
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

Спасибо сказали: 229 раз(а)




Репутация:   34  


Цитата(Гость_Гость_* @ 16.4.2009, 21:47) *
при недостаточном размере виджета

Под размером здесь подразумевается только высота?

Цитата(Гость_Гость_* @ 16.4.2009, 21:47) *
Текст клипируется окном высотой в которую 2 строки толком не влазят, у нижней нижняя часть букв подрезана.

А как должен вести себя виджет в таком случае, не давать родителю менять свои размеры, если текст потенциально будет не вмещаться?

Цитата(Гость_Гость_* @ 16.4.2009, 21:47) *
неправильную высоту

А сейчас речь о каком сплиттере горизонтальном или вертикальном?

Цитата(Гость_Гость_* @ 16.4.2009, 21:50) *
точнее говоря при запуске виджета не удается сделать неправильный ресайз

Запуске виджета куда, в космос чтоль? Неправильный ресайз QLabel'a? А что под этим подразумевается, отрицательные ширина или высота? Как должен выглядеть виджет с неправильным ресайзом? И должен ли он быть виден вообще...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Гость_*
сообщение 17.4.2009, 0:23
Сообщение #4





Гости








    


Цитата(SABROG @ 16.4.2009, 22:30) *
Под размером здесь подразумевается только высота?

Как высота так и ширина. При изменении высоты добавляются строки, так как установлен перенос по строкам.
Цитата(SABROG @ 16.4.2009, 22:30) *
Запуске виджета куда, в космос чтоль? Неправильный ресайз QLabel'a?

Запускать myWidgetPtr->show();

Цитата(SABROG @ 16.4.2009, 22:30) *
А что под этим подразумевается, отрицательные ширина или высота? Как должен выглядеть виджет с неправильным ресайзом?

Высота и ширина такие что у QLabel недостаточная высота. При myWidgetPtr->show(); не удается сделать мышкой непрвильный размер. А в сплитере удается и в вертикалином и горизонтальнос
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Гость_*
сообщение 17.4.2009, 0:26
Сообщение #5





Гости








    


Цитата(Гость_Гость_* @ 17.4.2009, 0:23) *
изменении высоты добавляются строки
при изменении ширины конечно
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 17.4.2009, 0:45
Сообщение #6


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

Спасибо сказали: 235 раз(а)




Репутация:   29  


Так ведь splitter для того и нужен, что можно вообще скрыть виджет.
Не знаю можно ли как то ограничеть работу сплитера. Попробуй зафиксировать для виджета высоту void QWidget::setFixedHeight ( int h )
Либо же заюзать void QSplitter::setSizes ( const QList<int> & list )
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Гость_*
сообщение 17.4.2009, 3:15
Сообщение #7





Гости








    


Цитата(igor_bogomolov @ 17.4.2009, 0:45)
Так ведь splitter для того и нужен, что можно вообще скрыть виджет.

у меня setChildrenCollapsible(false); он нормально понимает допустимые размеры детей, ну кроме этого :(
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Danila_Bagrofff
  опции профиля:
сообщение 17.4.2009, 8:07
Сообщение #8


Студент
*

Группа: Новичок
Сообщений: 14
Регистрация: 16.4.2009
Из: Нижний Новгород
Пользователь №: 690

Спасибо сказали: 0 раз(а)




Репутация:   0  


А если использовать QSizePolicy и QLayout?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 17.4.2009, 8:59
Сообщение #9


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

Спасибо сказали: 235 раз(а)




Репутация:   29  


Цитата(Гость_Гость_* @ 17.4.2009, 4:15) *
у меня setChildrenCollapsible(false); он нормально понимает допустимые размеры детей, ну кроме этого

Все это очень странно. Я Создал у себя форму с QLabel-ом, с теми же самыми свойствами что у тебя, добавил два сплитера, горизонтальный и вертикальный, оба со свойством setChildrenCollapsible(false). Накаких проблем с отображением у меня не возникло, текст не обрезается. Конфигурация на которой я проверял, у меня в подписи. Поэтому даже не знаю чем еще помочь. Приатачь свой ui файл, посмотрим его.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Гость_*
сообщение 17.4.2009, 13:02
Сообщение #10





Гости








    


вот минимальный пример. ручки правда не видны - палетку нужно править
#include <QtGui>

QWidget * mwg()
{   QWidget *wg=new QWidget(0);
    QGridLayout *lt = new QGridLayout(wg);
    lt->addWidget((QWidget *)new QPushButton,0,0);
    lt->addWidget((QWidget *)new QPushButton,1,2);
    lt->addWidget((QWidget *)new QPushButton,2,0);

    QLabel *lb=new QLabel;
    lb->setWordWrap(true);
    lb->setText("LONG TEXT  ====  In this example, keyboard focus is "
     " transferred to the label's buddy (the QLineEdit) "
     "  when the user presses Alt+P. If the buddy was a "
     "   button (inheriting from QAbstractButton), "
     "    triggering the mnemonic would emulate a button click. ");
    lt->addWidget(lb,1,1);
    return wg;
}

int main(int argc, char ** argv)
{   QApplication app( argc, argv );
    QSplitter splitter;
    splitter.setChildrenCollapsible(false);
    splitter.addWidget(mwg());
    splitter.addWidget(mwg());
    
    splitter.show();
    mwg()->show();
    
    return app.exec();
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V   1 2 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.3.2024, 20:01