Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [QT] Выравнивание текста у QPushButton, text alignment 
V
    Опции темы
W4FhLF
Дата 7.1.2009, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


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

Репутация: 4
Всего: 121



Приветствую всех!

Собсно весь вопрос в теме. Необходимо выравнять текст в QPushButton по левому краю. Что-то никак не могу найти где это сделать, наверное надо лезть в стили, но я в Qt не копенгаген. 


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
nickless
Дата 7.1.2009, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гентозавр
****


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

Репутация: 13
Всего: 181



Код

btn->setStyleSheet ("text-align: left;");



--------------------
user posted image

Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies
- Linus Torvalds
PM MAIL   Вверх
W4FhLF
Дата 7.1.2009, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


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

Репутация: 4
Всего: 121



От в рот жешь мне ноги. smile Спасибо! 


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
SABROG
Дата 8.1.2009, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


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

Репутация: 81
Всего: 91



Народ, а у вас text-align: top пашет с QPushButton ? Вроде бы все пашет и со всеми комбинациями, а там где top - нифига.


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
nickless
Дата 8.1.2009, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гентозавр
****


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

Репутация: 13
Всего: 181



У меня top тоже не работает (Qt 4.4.2, linux), странно...

Добавлено через 1 минуту и 15 секунд
А вон вчера уже кто-то баг зарепортил. SABROG, ты? smile 


--------------------
user posted image

Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies
- Linus Torvalds
PM MAIL   Вверх
SABROG
Дата 8.1.2009, 22:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


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

Репутация: 81
Всего: 91



Нет, видимо аноним-доброжелатель smile

Я собственно его случайно нашел сегодня, когда писал метод:

Код

bool inline MyClass::setAlignText(QObject *obj, quint16 flag) const
{
        return obj->setProperty("align", flag);
}
void MyClass::initStyleSheet()
{
        typedef QPair<quint16, QLatin1String> pair;
        QList <pair> lstAlign;
        lstAlign << qMakePair((quint16)Qt::AlignLeft, QLatin1String("left"))
        << qMakePair((quint16)Qt::AlignRight, QLatin1String("right"))
        << qMakePair((quint16)Qt::AlignTop, QLatin1String("top"))
        << qMakePair((quint16)Qt::AlignBottom, QLatin1String("bottom"))
        << qMakePair((quint16)Qt::AlignCenter, QLatin1String("center"))
        << qMakePair((quint16)(Qt::AlignLeft | Qt::AlignTop), QLatin1String("top left"))
        << qMakePair((quint16)(Qt::AlignLeft | Qt::AlignBottom), QLatin1String("bottom left"))
        << qMakePair((quint16)(Qt::AlignRight | Qt::AlignTop), QLatin1String("top right"))
        << qMakePair((quint16)(Qt::AlignRight | Qt::AlignBottom), QLatin1String("bottom right"))
        << qMakePair((quint16)(Qt::AlignTop | Qt::AlignCenter), QLatin1String("top center"))
        << qMakePair((quint16)(Qt::AlignBottom | Qt::AlignCenter), QLatin1String("bottom center"));
        
        QString ss;
        foreach (pair item, lstAlign)
        {
            ss.append(QString(""
                    "QPushButton[align=\"%1\"]\n"
                    "{\n"
                         "\ttext-align: %2;\n"
                    "}\n"
                    ).arg(item.first).arg(item.second)
                    );
        }
        qApp->setStyleSheet(ss);
}


В общем в 2 этапа. Сначала вызываем initStyleSheet, это пропишет возможные комбинации выравнивания для класса QPushButton.
А потом любой кнопке уже можно выставлять как вздумается (и включается и выключается).

Код

    initStyleSheet();
    setAlignText(ui.pushButton, Qt::AlignLeft);
    setAlignText(ui.pushButton_2, Qt::AlignRight);
    setAlignText(ui.pushButton_3, Qt::AlignTop);
    setAlignText(ui.pushButton_4, Qt::AlignBottom);
    setAlignText(ui.pushButton_5, Qt::AlignCenter);
    setAlignText(ui.pushButton_6, (Qt::AlignLeft | Qt::AlignTop));
    setAlignText(ui.pushButton_7, (Qt::AlignLeft | Qt::AlignBottom));
    setAlignText(ui.pushButton_8, (Qt::AlignRight | Qt::AlignTop));
    setAlignText(ui.pushButton_9, (Qt::AlignRight | Qt::AlignBottom));
    setAlignText(ui.pushButton_10, (Qt::AlignTop | Qt::AlignCenter));
    setAlignText(ui.pushButton_11, (Qt::AlignBottom | Qt::AlignCenter));





--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
Elfebet
Дата 9.1.2009, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 545
Регистрация: 15.5.2006
Где: Украина. Запорожь е.

Репутация: 5
Всего: 14



народ вы наверное ошибаетесь, text-align - для горизонтального выравнивания, а вот для вертикального используется vertical-align
p.s. если судить по стандарту css


--------------------
Программист не должен всё знать... он должен знать где можно посмотреть
PM MAIL ICQ GTalk   Вверх
SABROG
Дата 9.1.2009, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


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

Репутация: 81
Всего: 91



Цитата(Elfebet @ 9.1.2009,  10:20)
народ вы наверное ошибаетесь, text-align - для горизонтального выравнивания, а вот для вертикального используется vertical-align
p.s. если судить по стандарту css

Я на другом форуме это обсуждал. 

У style sheet's нет свойства vertical-align, оно есть только у QTextDocument, но он никак к стилям не относится. Кроме того тролли не разделяют по типам горизонтальный/вертикальный. Свойство text-align у них относится к единому типу Alignment, в котором так и написано:

Цитата

Horizontal and/or vertical alignment.


Я конечно не отрицаю, что "text-align" и "vertical-align" (которого у них нет) могут относится к единому типу Alignment и содержать каждый только свой набор возможных значений. Но этого разделения нет и почему-то bottom работает.

Т.е. тут либо надо вырубать к чертям bottom, либо включать top (если наплевать на стандарт CSS), либо добавить свойство vertical-align и тип Alignment разделить на два типа VAlignment и HAlignment.


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
nickless
Дата 10.1.2009, 03:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гентозавр
****


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

Репутация: 13
Всего: 181



Цитата(http://trolltech.com/developer/task-tracker/index_html?method=entry&id=240367)

2009-01-09 12:52 - Version for fix set to 'Some future release'
2009-01-09 12:52 - Priority changed to '2'

Похоже "когда-нибудь" пофиксят smile


--------------------
user posted image

Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies
- Linus Torvalds
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

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

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


 




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


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

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