Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Kosh от Февраль 05, 2008, 16:51



Название: [qt 3] про QString или, скорей всего, QTable
Отправлено: Kosh от Февраль 05, 2008, 16:51

table->setText( col, text );

если text содержит только цифры, текст оказывается прижат вправо, в противном случае - влево. Поскажите волшебное слово, чтобы все влево прижать.


Название: Re: [qt 3] про QString или, скорей всего, QTable
Отправлено: Steven_Orko от Февраль 06, 2008, 16:35
Поставить пробел вначале?


Название: Re: [qt 3] про QString или, скорей всего, QTable
Отправлено: Kosh от Февраль 06, 2008, 17:08
нелзя ничего добавлять, потом из этих полей текст используется.
Можно, конечно ко всем текстам пробел добавлять, а потом у всех его откидывать, но это уже что-то на грани маразма


Название: Re: [qt 3] про QString или, скорей всего, QTable
Отправлено: Racheengel от Февраль 06, 2008, 19:50
можно попробовать свою отрисовку ячейки сделать наверно?


Название: Re: [qt 3] про QString или, скорей всего, QTable
Отправлено: BRE от Февраль 06, 2008, 20:38
Тогда уж проще сделать наследника от QTableItem в котором переопределить метод alignment(). Тогда можно будет сделать установку выравнивания хоть в конструкторе данного класса, хоть в отдельной функцией.
Как то так:

Код:
class MyTableItem : public QTableItem
{
public:
    MyTableItem( QTable *table, EditType et, const QString &text, int align ) : QTableItem( t, et, text ), m_align( align ) {}
    ...

    void setAlignment( int align ) { m_align = align; }

    virtual int alignment() const { return m_align; }

private:
    int m_align;
};


Название: Re: [qt 3] про QString или, скорей всего, QTable
Отправлено: Kosh от Февраль 19, 2008, 11:03
тогда уж и метод отрисовки перегрузить надо, т.к. QTable плевать на переменную m_align


Название: Re: [qt 3] про QString или, скорей всего, QTable
Отправлено: BRE от Февраль 19, 2008, 16:35
тогда уж и метод отрисовки перегрузить надо, т.к. QTable плевать на переменную m_align
Зато ей не плевать на результат вызова виртуального метода QTableItem::alignment().
Ну а если хочется, то можно и метод отрисовки перегрузить, да и вообще кучу других.  ;)


Название: Re: [qt 3] про QString или, скорей всего, QTable
Отправлено: Sergeich от Февраль 20, 2008, 02:49
Можно вообще пропатчить саму Qt-шку ;) так Тролли на 3-ку забили :) Типа в файле src/table/qtable.cpp рисуем в место
Код:
int QTableItem::alignment() const
{
    bool num;
    bool ok1 = FALSE, ok2 = FALSE;
    (void)text().toInt( &ok1 );
    if ( !ok1 )
(void)text().toDouble( &ok2 ); // ### should be .-aligned
    num = ok1 || ok2;

    return ( num ? AlignRight : AlignLeft ) | AlignVCenter;
}
Код:
int QTableItem::alignment() const
{
    return AlignLeft | AlignVCenter;
}
Ну а по-уму надо действительно наследовать QTableItem, в котором переопределить alignment(). Дополнительно еще можно отнаследоваться от QTable и переопределить setText:
Код:
MyTable::setText() 
{
    QTableItem *itm = item( row, col );
    if ( itm ) {
itm->setText( text );
itm->updateEditor( row, col );
updateCell( row, col );
    } else {
QTableItem *i = new MyTableItem( this, QTableItem::OnTyping,
text, QPixmap() );
setItem( row, col, i );
    }
}


Название: Re: [qt 3] про QString или, скорей всего, QTable
Отправлено: Kosh от Февраль 27, 2008, 17:11
забила я на это дело и ушла на qt-4