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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QTable выровнять текст по центру  (Прочитано 6801 раз)
Sir_J
Гость
« : Июль 26, 2005, 23:16 »

Как в QTableItem выровнять текст по центру ?
метод который возвращает выравнивание там есть alignment()
а вот метода setAlignment (как в QLAbel) я не нашел
читал
http://prog.org.ru/forum/htopic_1607_alignment.html
но так и не понял что где нужно определять.
Нормальный человеческий способ есть ?
Записан
lepsai
Гость
« Ответ #1 : Июль 27, 2005, 02:10 »

Цитировать
Нормальный человеческий способ есть ?


Во народ! чаго те ещё надо, обьяснили же для идиотов, а ты не доволен.  Что такое виртуальные функции слышал? Если нет  - помочь нельзя. Если да, то сделай свой класс и переопредели функцию alignment():

class MyTableItem : public QTableItem
{
int alignment()
{

}
};

А если чего не понял, то греши не на человеческий язык, а на собственную голову...[/quote]
Записан
Sir_J
Гость
« Ответ #2 : Июль 27, 2005, 15:32 »

Переопределил класс QCheckTableItem так
Код:

#include <qtable.h>

class MyTableItem: public QCheckTableItem
{
        public:
        MyTableItem(QTable *table, const QString & txt ):QCheckTableItem(table, txt) {};
        int alignment() const { return AlignHCenter|AlignVCenter; };
};

в коде делаю так
MyTableItem *ci = new MyTableItem(t1, "tets");
по центру НЕ выравниается куда копать ?

P.S выранивается только текст в чекбоксе а надо сам чекбокс
Записан
Evgeny108
Гость
« Ответ #3 : Июль 10, 2007, 09:54 »

Нужно еще привязать к каждой ячейке QTable объект MyTableItem:

Код:
for(int r = 0; r < t1->numRows(); r++)
  for(int c = 0; c < t1->numCols(); c++)
    t1->setItem(r, c, new MyTableItem(t1, t1->text(r, c)));
Записан
sikuda13
Гость
« Ответ #4 : Июль 10, 2007, 11:22 »

Копать в сторону Delegate Classes

Пример:

Объявляем класс
class MItemDelegateMoney : public QItemDelegate
  {
  public:
    MItemDelegateMoney(QObject * parent = 0):QItemDelegate(parent)
    {};

  private:
    void drawDisplay ( QPainter * painter, const QStyleOptionViewItem & option, const QRect & rect, const QString & text ) const;
  };

реализация
void MItemDelegateMoney::drawDisplay ( QPainter * painter, const QStyleOptionViewItem & option, const QRect & rect, const QString & text ) const
  {
    QStyleOptionViewItem opt = option;
    opt.displayAlignment |= Qt::AlignRight;
      QItemDelegate::drawDisplay ( painter, opt, rect, text);
  }

А в конструктуре наследника от QTableView делаем объекта типа:
MItemDelegateMoney* itemSum = new MItemDelegateMoney(this);
setItemDelegateForColumn(4,itemSum);
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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