06 сентября 2006

Qt4.2-RC1. Интересные моменты

QAbstractButton

Теперь можно задавать режим повторения кнопки. Пока кнопка нажата с заданным интервалом посылается сигнал clicked(). Это свойство не работает для кнопок фиксирующих своё положение (toggle buttons). Настраивается это поведение следующими свойствами:

autoRepeat : bool

autoRepeatDelay : int

autoRepeatInterval : int

QАbstractItemView

Появилась возможность указывать поведение при вертикальной и горизонтальной прокрутке. Прокручивать теперь можно, либо по итему (QAbstractItemView::ScrollPerItem), либо попиксельно (QabstractItemView::ScrollPerPixel). Поведение задаётся отдельно для вертикальной и горизонтальной прокрутки.

horizontalScrollMode : ScrollMode

verticalScrollMode : ScrollMode

QAbstractScrollArea

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

void QAbstractScrollArea::addScrollBarWidget ( QWidget * widget, Qt::Alignment alignment )

Так же появилась возможность устанавливать виджет в их угол.

void QAbstractScrollArea::setCornerWidget ( QWidget * widget )

QAction

Как и для QAbstractButton появилась возможность задавать повторения и для QAction. Повторения осуществляются при удерживаниии клавиатурной комбинации, соответствующей данному QAction. Параметры повторения зависят от глобальных настроек системы. По умолчанию данное поведение включено.

autoRepeat : bool

QButtonGroup

QButtonGroup теперь посылает сигналы от его кнопок со ссылкой на кнопку пославшую сигнал.

void QButtonGroup::buttonPressed ( QAbstractButton * button ) [signal]

void QButtonGroup::buttonPressed ( int id ) [signal]

void QButtonGroup::buttonReleased ( QAbstractButton * button ) [signal]

void QButtonGroup::buttonReleased ( int id ) [signal]

QDataWidgetMapper

Хоть я и обещал не касаться новшеств системы, но для этого класса изменю своему правилу.

QDataWidgetMapper предоставляет соответствие между секциями модели данных и виджетами. Каждый раз при изменении текущего итема модели, ассоциированные виджеты обновляются в соответствии с данными модели. При редактировании данных в этих виджетах, данные заносятся обратно в модель. Также возможно использование делегатов для ассоциирования с нестандартными виджетами.

Пусть дана модель model со следующими данными:

1

Trolltech ASA

Oslo

2

Trolltech Pty

Brisbane

3

Trolltech Inc

Palo Alto

4

Trolltech China

Beijing

5

Trolltech GmbH

Berlin

Следующий код показывает как установить для данной модели ассоциации с виджетами:

QDataWidgetMapper *mapper = new QDataWidgetMapper;

mapper->setModel(model);

mapper->addMapping(mySpinBox, 0);

mapper->addMapping(myLineEdit, 1);

mapper->addMapping(myCountryChooser, 2);

mapper->toFirst();

QDate

Наконец-то появилась возможность установить дату не сломав себе шею.

bool QDate::setDate ( int year, int month, int day )

QDateTimeEdit

Появилась возможность автоматически вызывать виджет календаря при редактировании даты.

calendarPopup : bool

QHash и QMap

Полезная функция для получения уникальных ключей.

QList<Key> QHash::uniqueKeys () const

QLibrary

Наконец-то QLibrary будет сообщать о своих ошибках.

QString QLibrary::errorString () const

QListView

Появилась возможность свёртывания строк. Естественно отключенная по умолчанию.

wordWrap : bool

QListWidgetItem

Теперь можно задавать фон и передний план для каждого итема.

void QListWidgetItem::setBackground ( const QBrush & brush )

void QListWidgetItem::setForeground ( const QBrush & brush )

QLocale

Думаю, что так же полезна будет функция сообщения имени дня в соответствующей локали.

QString QLocale::dayName ( int day, FormatType type = LongFormat ) const

QMainWindow

Все действия с прикреплёнными виджетами (dock widgets) теперь красиво анимируются по умолчанию.

animationEnabled : bool

Если у вас достаточно много прикреплённых виджетов, то их можно теперь объединять перетаскиванием. И переключаться между ними при помощи появляющихся при этом закладок.

dockNestingEnabled : bool

QPrinter

Теперь можно печатать не только на принтер и в PDF, но и создавать PostScript документы (Qprinter::PostScriptFormat).

enum QPrinter::OutputFormat

QProgressBar

Появилась возможность устанавливать формат для отображённых цифр.

%p – завершено в процентах.

%v – текущее значение

%m – общее количество шагов

По умолчанию формат такой: "%p%".

format : QString

QSortFilterProxyModel

Появилась возожность динамически фильтровать и сортировать данные при изменении исходной модели. По умолчанию отключено.

dynamicSortFilter : bool

Так же появилась возможность задавать регистронезависимую сортировку. По умолчанию сортировка учитывает регистр.

sortCaseSensitivity : Qt::CaseSensitivity

QTableView

Появилась возможность объединения ячеек в таблице!!!

void QTableView::setSpan ( int row, int column, int rowSpan, int columnSpan )

QTextTableCell

Наконец-то появилась возможность задания формата каждой ячейки в таблице.

void QTextTableCell::setFormat ( const QTextCharFormat & format )

QTextTableFormat

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

void QTextTableFormat::setHeaderRowCount ( int count )

QTreeView

Теперь без лишних телодвижение можно раскрыть и закрыть всё дерево.

void QTreeView::expandAll () [slot]

void QTreeView::collapseAll () [slot]