Главная · Все классы · Основные классы · Классы по группам · Модули · Функции

Портирование на Qt 4

Этот документ описывает процесс портирования приложений с Qt 3 на Qt 4. Если вы ещё не приняли решение о портировании или не уверены в том стоит ли это делать, ознакомьтесь с основными возможностями, предлагаемыми Qt 4. За подсказками как писать код Qt 3, который легко перенести на Qt 4, смотрите также Миграция с Qt 3 на Qt 4.

Остальные руководства по портированию:

Серия Qt 4 бинарно не совместима с серией 3. Это означает, что программы скомпилированные для Qt 3 нужно перекомпилировать для работы с Qt 4. Qt 4 также не полностью совместимы с Qt 3 на уровне исходных кодов, однако почти все точки несовместимости вызывают ошибки компилятора или сообщения во время выполнения (это лучше чем загадочные результаты). Qt 4 включает множество дополнительных возможностей и избавляется от устаревшей функциональности. Портирование с Qt 3 на Qt 4 требует некоторых усилий, но однажды выполненное оно делает доступным для использования в ваших приложениях значительную дополнительную производительность и гибкость Qt 4.

Чтобы портировать код с Qt 3 на Qt 4:

  1. Вкратце прочитайте замечания по портированию ниже чтобы получить некоторое представление о том, чего ожидать.
  2. Убедитесь, что ваш код компилируется и выполняется хорошо на всех ваших целевых платформах с Qt 3.
  3. Добавьте строку QT += qt3support к вашему .pro файлу если используете qmake; в противном случае, отредактируете ваше make-файл или файл проекта чтобы прилинковать библиотеку Qt3Support и добавить -DQT3_SUPPORT к вашим флагам компиляции. (Вам может понадобиться указать также другие библиотеки. За подробностями обращайтесь к Что нового в Qt 4.)
  4. Запустите инструмент портирования qt3to4. Инструмент пройдет по вашему исходному коду и адаптирует его к Qt 4.
  5. Следуйте инструкциям на странице Портирование файлов .ui на Qt 4 чтобы портировать файлы Qt Designer.
  6. Перекомпилируйте с Qt 4. Для каждой ошибки найдите ниже связанные с ними идентификаторы (например, имена функций, классов). Этот документ упоминает все важные идентификаторы, чтобы помочь вам получить информацию, нужную вам ценой некоторого многословия.

Инструмент портирования qt3to4 заменяет вхождения классов Qt 3, которые больше не существуют в Qt 4, на соответствующие классы поддержки Qt 3; например, QListBox превратится в Q3ListBox.

В какой-то момент вы можете захотеть прекратить линковку вместе с библиотекой поддержки Qt 3 (Qt3Support) и получить преимущества от новых возможностей Qt 4. В инструкциях ниже разъясняется, как это сделать для каждого класса совместимости.

Кроме классов Qt3Support (таких как Q3Action, Q3ListBox и Q3ValueList), Qt 4 предоставляет функции совместимости когда старый API может сосуществовать вместе с новым. Например, QString предоставляет функцию совместимости QString::simplifyWhiteSpace(), которая реализована встроенной (inline) и которая просто вызывает QString::simplified(). Функции совместимости здесь не документированы; вместо этого они документированы в каждом классе.

Если строка QT += qt3support имеется в вашем .pro-файле, qmake автоматически определит идентификатор QT3_SUPPORT, включая поддержку функций совместимости. Вы также можете определить идентификатор вручную (например, если вы не хотите компоновать с библиотекой Qt3Support), или вы можете взамен определить QT3_SUPPORT_WARNINGS, сообщая компилятору породить предупреждение при вызове функции совместимости. (Это работает только с GCC 3.2+ и MSVC 7.)

Если вы зависните, сообщите в лист рассылки qt-interest. Если вы являетесь лицензированным пользователем, вы также можете связаться с командой технической поддержки Trolltech.

Содержание:

Приведение типов и типы объектов

В Qt 3 можно было использовать функцию qt_cast() чтобы определить могут ли экземпляры подклассов класса QObject безопасно приводить типы к производным типам этих подклассов. Например, если экземпляр класса QFrame передаётся в функцию, в сигнатуре которой указан указатель на QWidget в качестве аргумента, функция qt_cast() может быть использована для получения указателя на QFrame таким образом, что можно получить доступ к функциям экземпляра класса.

В Qt 4 большая часть этой функциональности предоставляется функцией qobject_cast(), а дополнительные функции предоставляют также сходную функциональность для некоторых не-QObject типов:

Функция в Qt 3Функция в Qt 4
T *qt_cast<T *>(QObject *)T *qobject_cast<T *>(QObject *)
T qgraphicsitem_cast<T>(QGraphicsItem *)
T qstyleoption_cast<T>(QStyleOption *)
T qvariant_cast<T>(const QVariant &)
T qdbus_cast(const QDBusArgument &)

Имена типов

В таблице ниже перечислены классы, которые были переименованы в Qt 4. Если вы компилируете свои приложения с определенным макросом QT3_SUPPORT, старые имена будут доступны.

Всякий раз когда вы встречаете имя в левой части, вы можете безопасно заменить его в вашей программе на эквивалент Qt 4. Инструмент qt3to4 выполнит преобразование автоматически.

Имя класса в Qt 3Имя класса в Qt 4
QIconSetQIcon
QWMatrixQMatrix
QGuardedPtrQPointer

В таблице ниже перечислены перечисления и псевдонимы типов (typedefs), которые были переименованы в Qt 4. Если вы компилируете свои приложения с определенным макросом QT3_SUPPORT, старые имена будут доступны.

Всякий раз когда вы встречаете имя в левой части, вы можете безопасно заменить его в вашей программе на эквивалент Qt 4. Инструмент qt3to4 выполнит преобразование автоматически.

Имя типа в Qt 3Имя типа в Qt 4
QApplication::ColorModeQApplication::ColorSpec
QButton::ToggleStateQCheckBox::ToggleState
QCursorShapeQt::CursorShape
QFile::FilterSpecQFile::Filters
QFile::PermissionSpecQFile::Permission
QFile::SortSpecQFile::SortFlags
QFile::StatusQFile::Error
QFileInfo::PermissionSpecQFile::Permission
QGrid::DirectionQt::Orientation
QGridWidget::DirectionQt::Orientation
QIODevice::Offsetqlonglong
QImage::ScaleModeQt::AspectRatioMode
QSize::ScaleModeQt::AspectRatioMode
QSocket::ErrorQ3Socket::Error
QSocket::StateQ3Socket::State
QStyle::SCFlagsQStyle::SubControls
QStyle::SFlagsQStyle::State
QTSQTextStream
QUrlDragQUriDrag
QWidget::FocusPolicyQt::FocusPolicy
Q_LLONGqlonglong
Q_ULLONGqulonglong
Qt::DockQt::ToolBarDock
Qt::MacintoshVersionQSysInfo::MacVersion
Qt::TextFlagsQt::TextFlag
Qt::WindowsVersionQSysInfo::WinVersion

Значения перечисления

В таблице ниже перечислены перечисления, которые были переименованы в Qt 4. Если вы компилируете свои приложения с определенным макросом QT3_SUPPORT, старые имена будут доступны.

Всякий раз когда вы встречаете имя в левой части, вы можете безопасно заменить его в вашей программе на эквивалент Qt 4. Инструмент qt3to4 выполнит преобразование автоматически.

Имя значения перечисления в Qt 3Имя значения перечисления в Qt 4
IO_AppendQIODevice::Append
IO_ReadOnlyQIODevice::ReadOnly
IO_ReadWriteQIODevice::ReadWrite
IO_TranslateQIODevice::Text
IO_TruncateQIODevice::Truncate
IO_WriteOnlyQIODevice::WriteOnly
IO_RawQIODevice::Unbuffered
QAccessible::MoveableQAccessible::Movable
QApplication::CustomColorsQApplication::CustomColor
QApplication::NormalColorsQApplication::NormalColor
QButton::NoChangeQCheckBox::NoChange
QButton::OffQCheckBox::Off
QButton::OnQCheckBox::On
QChar::SingleQChar::NoDecomposition
QChar::byteOrderMarkQChar::ByteOrderMark
QChar::byteOrderSwappedQChar::ByteOrderSwapped
QChar::nbspQChar::Nbsp
QChar::nullQChar::Null
QChar::replacementQChar::ReplacementCharacter
QComboBox::AfterCurrentQComboBox::InsertAfterCurrent
QComboBox::AtBottomQComboBox::InsertAtBottom
QComboBox::AtCurrentQComboBox::InsertAtCurrent
QComboBox::AtTopQComboBox::InsertAtTop
QComboBox::BeforeCurrentQComboBox::InsertBeforeCurrent
QComboBox::NoInsertionQComboBox::NoInsert
QDir::DefaultFilterQDir::NoFilter
QDir::DefaultSortQDir::NoSort
QEvent::AccelQEvent::Shortcut
QEvent::AccelOverrideQEvent::ShortcutOverride
QEvent::CaptionChangeQEvent::WindowTitleChange
QEvent::ChildInsertedQEvent::ChildAdded
QEvent::IMComposeQEvent::InputMethodCompose
QEvent::IMEndQEvent::InputMethodEnd
QEvent::IMStartQEvent::InputMethodStart
QEvent::IconChangeQEvent::WindowIconChange
QEvent::LayoutHintQEvent::LayoutRequest
QEvent::ReparentQEvent::ParentChange
QFileInfo::ExeGroupQFile::ExeGroup
QFileInfo::ExeOtherQFile::ExeOther
QFileInfo::ExeOwnerQFile::ExeOwner
QFileInfo::ExeUserQFile::ExeUser
QFileInfo::ReadGroupQFile::ReadGroup
QFileInfo::ReadOtherQFile::ReadOther
QFileInfo::ReadOwnerQFile::ReadOwner
QFileInfo::ReadUserQFile::ReadUser
QFileInfo::WriteGroupQFile::WriteGroup
QFileInfo::WriteOtherQFile::WriteOther
QFileInfo::WriteOwnerQFile::WriteOwner
QFileInfo::WriteUserQFile::WriteUser
QFrame::GroupBoxPanelQFrame::StyledPanel
QFrame::LineEditPanelQFrame::StyledPanel
QFrame::MenuBarPanelQFrame::StyledPanel
QFrame::PopupPanelQFrame::StyledPanel
QFrame::TabWidgetPanelQFrame::StyledPanel
QFrame::ToolBarPanelQFrame::StyledPanel
QImage::ScaleFreeQt::IgnoreAspectRatio
QImage::ScaleMaxQt::KeepAspectRatioByExpanding
QImage::ScaleMinQt::KeepAspectRatio
Qt::IdenticalQKeySequence::ExactMatch
Qt::NoMatchQKeySequence::NoMatch
Qt::PartialMatchQKeySequence::PartialMatch
QLayout::AutoQLayout::SetDefaultConstraint
QLayout::FixedQLayout::SetFixedSize
QLayout::FreeResizeQLayout::SetNoConstraint
QLayout::MinimumQLayout::SetMinimumSize
QMacStyle::SizeNoneQMacStyle::SizeDefault
QSettings::GlobalQSettings::SystemScope
QSettings::UserQSettings::UserScope
QSize::ScaleFreeQt::IgnoreAspectRatio
QSize::ScaleMaxQt::KeepAspectRatioByExpanding
QSize::ScaleMinQt::KeepAspectRatio
QSizePolicy::HorizontalQSizePolicy::Horizontally
QSizePolicy::VerticalQSizePolicy::Vertically
QSlider::AboveQSlider::TicksAbove
QSlider::BelowQSlider::TicksBelow
QSlider::BothQSlider::TicksBothSides
QSlider::LeftQSlider::TicksLeft
QSlider::NoMarksQSlider::NoTicks
QSlider::RightQSlider::TicksRight
QSocket::ClosingQ3Socket::Closing
QSocket::ConnectedQ3Socket::Connected
QSocket::ConnectingQ3Socket::Connecting
QSocket::ConnectionQ3Socket::Connection
QSocket::ErrConnectionRefusedQ3Socket::ErrConnectionRefused
QSocket::ErrHostNotFoundQ3Socket::ErrHostNotFound
QSocket::ErrSocketReadQ3Socket::ErrSocketRead
QSocket::HostLookupQAbstractSocket::HostLookupState
QSocket::IdleQAbstractSocket::UnconnectedState
QSqlError::ConnectionQSqlError::ConnectionError
QSqlError::NoneQSqlError::NoError
QSqlError::StatementQSqlError::StatementError
QSqlError::TransactionQSqlError::TransactionError
QSqlError::UnknownQSqlError::UnknownError
QStyle::CC_ListViewQStyle::CC_Q3ListView
QStyle::SH_UnderlineAcceleratorQStyle::SH_UnderlineShortcut
QStyle::Style_ActiveQStyle::State_Active
QStyle::Style_AutoRaiseQStyle::State_AutoRaise
QStyle::Style_BottomQStyle::State_Bottom
QStyle::Style_ChildrenQStyle::State_Children
QStyle::Style_DefaultQStyle::State_None
QStyle::Style_DownQStyle::State_DownArrow
QStyle::Style_EditingQStyle::State_Editing
QStyle::Style_EnabledQStyle::State_Enabled
QStyle::Style_FocusAtBorderQStyle::State_FocusAtBorder
QStyle::Style_HasFocusQStyle::State_HasFocus
QStyle::Style_HorizontalQStyle::State_Horizontal
QStyle::Style_ItemQStyle::State_Item
QStyle::Style_MouseOverQStyle::State_MouseOver
QStyle::Style_NoChangeQStyle::State_NoChange
QStyle::Style_NoneQStyle::State_None
QStyle::Style_OffQStyle::State_Off
QStyle::Style_OnQStyle::State_On
QStyle::Style_OpenQStyle::State_Open
QStyle::Style_RaisedQStyle::State_Raised
QStyle::Style_RectangleQStyle::State_Rectangle
QStyle::Style_SelectedQStyle::State_Selected
QStyle::Style_SiblingQStyle::State_Sibling
QStyle::Style_SunkenQStyle::State_Sunken
QStyle::Style_TopQStyle::State_Top
QStyle::Style_UpQStyle::State_Up
QTabBar::RoundedAboveQTabBar::RoundedNorth
QTabBar::RoundedBelowQTabBar:: RoundedSouth
QTabBar::TriangularAboveQTabBar:: TriangularNorth
QTabBar::TriangularBelowQTabBar:: TriangularSouth
QTextEdit::MovePgDownQTextEdit::MovePageDown
QTextEdit::MovePgUpQTextEdit::MovePageUp
QToolButton::RightQToolButton::BesideIcon
QToolButton::UnderQToolButton::BelowIcon
QValidator::ValidQValidator::Intermediate
QVariant::IconSetQCoreVariant::Icon
QWidget::ClickFocusQt::ClickFocus
QWidget::NoFocusQt::NoFocus
QWidget::StrongFocusQt::StrongFocus
QWidget::TabFocusQt::TabFocus
QWidget::WheelFocusQt::WheelFocus
Qt::AlignAutoQt::AlignLeft
Qt::AltButtonQt::AltModifier
Qt::AscendingQt::AscendingOrder
Qt::BottomQt::DockBottom
Qt::BottomLeftQt::BottomLeftCorner
Qt::BottomRightQt::BottomRightCorner
Qt::BreakAnywhereQt::TextWrapAnywhere
Qt::ControlButtonQt::ControlModifier
Qt::CustomPatternQt::TexturePattern
Qt::DescendingQt::DescendingOrder
Qt::DontClipQt::TextDontClip
Qt::DontPrintQt::TextDontPrint
Qt::ExpandTabsQt::TextExpandTabs
Qt::IncludeTrailingSpacesQt::TextIncludeTrailingSpaces
Qt::KeyButtonMaskQt::KeyboardModifierMask
Qt::Key_BackSpaceQt::Key_Backspace
Qt::Key_BackTabQt::Key_Backtab
Qt::Key_MediaPrevQt::Key_MediaPrevious
Qt::Key_NextQt::Key_PageDown
Qt::Key_PriorQt::Key_PageUp
Qt::Key_aacuteQt::Key_Aacute
Qt::Key_acircumflexQt::Key_Acircumflex
Qt::Key_adiaeresisQt::Key_Adiaeresis
Qt::Key_aeQt::Key_AE
Qt::Key_agraveQt::Key_Agrave
Qt::Key_aringQt::Key_Aring
Qt::Key_atildeQt::Key_Atilde
Qt::Key_ccedillaQt::Key_Ccedilla
Qt::Key_eacuteQt::Key_Eacute
Qt::Key_ecircumflexQt::Key_Ecircumflex
Qt::Key_ediaeresisQt::Key_Ediaeresis
Qt::Key_egraveQt::Key_Egrave
Qt::Key_ethQt::Key_ETH
Qt::Key_iacuteQt::Key_Iacute
Qt::Key_icircumflexQt::Key_Icircumflex
Qt::Key_idiaeresisQt::Key_Idiaeresis
Qt::Key_igraveQt::Key_Igrave
Qt::Key_ntildeQt::Key_Ntilde
Qt::Key_oacuteQt::Key_Oacute
Qt::Key_ocircumflexQt::Key_Ocircumflex
Qt::Key_odiaeresisQt::Key_Odiaeresis
Qt::Key_ograveQt::Key_Ograve
Qt::Key_oslashQt::Key_Ooblique
Qt::Key_otildeQt::Key_Otilde
Qt::Key_thornQt::Key_THORN
Qt::Key_uacuteQt::Key_Uacute
Qt::Key_ucircumflexQt::Key_Ucircumflex
Qt::Key_udiaeresisQt::Key_Udiaeresis
Qt::Key_ugraveQt::Key_Ugrave
Qt::Key_yacuteQt::Key_Yacute
Qt::KeypadQt::KeypadModifier
Qt::LeftQt::DockLeft
Qt::MV_10_DOT_0QSysInfo::MV_10_0
Qt::MV_10_DOT_1QSysInfo::MV_10_1
Qt::MV_10_DOT_2QSysInfo::MV_10_2
Qt::MV_10_DOT_3QSysInfo::MV_10_3
Qt::MV_10_DOT_4QSysInfo::MV_10_4
Qt::MV_9QSysInfo::MV_9
Qt::MV_CHEETAHQSysInfo::MV_10_0
Qt::MV_JAGUARQSysInfo::MV_10_2
Qt::MV_PANTHERQSysInfo::MV_10_3
Qt::MV_PUMAQSysInfo::MV_10_1
Qt::MV_TIGERQSysInfo::MV_10_4
Qt::MV_UnknownQSysInfo::MV_Unknown
Qt::MetaButtonQt::MetaModifier
Qt::MinimizedQt::DockMinimized
Qt::NoAccelQt::TextHideMnemonic
Qt::OverlineQt::TextOverline
Qt::RightQt::DockRight
Qt::ShiftButtonQt::ShiftModifier
Qt::ShowPrefixQt::TextShowMnemonic
Qt::SingleLineQt::TextSingleLine
Qt::StrikeOutQt::TextStrikeOut
Qt::TopQt::DockTop
Qt::TopLeftQt::TopLeftCorner
Qt::TopRightQt::TopRightCorner
Qt::TornOffQt::DockTornOff
Qt::UnderlineQt::TextUnderline
Qt::UnmanagedQt::DockUnmanaged
Qt::WNorthWestGravityQt::WStaticContents
Qt::WRepaintNoEraseQt::WNoAutoErase
Qt::WStyle_DialogQt::WType_Dialog
Qt::WStyle_NoBorderExQt::WStyle_NoBorder
Qt::WType_Modal(Qt::WType_Dialog | Qt::WShowModal)
Qt::WV_2000QSysInfo::WV_2000
Qt::WV_2003QSysInfo::WV_2003
Qt::WV_32sQSysInfo::WV_32s
Qt::WV_95QSysInfo::WV_95
Qt::WV_98QSysInfo::WV_98
Qt::WV_CEQSysInfo::WV_CE
Qt::WV_CENETQSysInfo::WV_CENET
Qt::WV_CE_basedQSysInfo::WV_CE_based
Qt::WV_DOS_basedQSysInfo::WV_DOS_based
Qt::WV_MeQSysInfo::WV_Me
Qt::WV_NTQSysInfo::WV_NT
Qt::WV_NT_basedQSysInfo::WV_NT_based
Qt::WV_XPQSysInfo::WV_XP
Qt::WordBreakQt::TextWordWrap
Qt::IbeamCursorQt::IBeamCursor

Кроме того, следующие флаги окна были либо заменены атрибутами виджета или устарели:

Тип в Qt 3Эквивалент в Qt 4
Qt::WDestructiveCloseИспользуйте взамен QWidget::setAttribute(Qt::WA_DeleteOnClose).
Qt::WStaticContentsИспользуйте взамен QWidget::setAttribute(Qt::WA_StaticContents).
Qt::WNorthWestGravity
Qt::WNoAutoEraseИспользуйте взамен QWidget::setAttribute(Qt::WA_NoBackground).
Qt::WResizeNoErase
Qt::WRepaintNoErase
Qt::WPaintCleverНе нужны в Qt 4.
Qt::WMacNoSheetНе нужны в Qt 4.

В Qt 4.1 флаги виджета, использовавшиеся для установки мадальности окна, были заменены на единственное перечисление, которое может быть использоваться для указания модального поведения виджетов верхнего уровня:

Тип в Qt 3Эквивалент в Qt 4
Qt::WShowModalИспользуйте взамен QWidget::setWindowModality(Qt::ApplicationModal).
Qt::WGroupLeaderИспользуйте QWidget::setWindowModality(Qt::WindowModal) для каждого дочернего диалога лидера группы (group leader), но не изменяйте модальность самого лидера группы.

Свойства

Некоторые свойства были переименованы в Qt 4, чтобы сделать Qt API более последовательным и более интуитивным. Например, свойство QWidget'а - caption - было переименовано в windowTitle чтобы сделать понятным, что оно относится к заголовку показываемому в панели заголовка окна.

Кроме того, система свойств была расширена чтобы разрешить переопределение свойств в подклассах с помощью макроса Q_PROPERTY(), устраняя необходимость в макросе Q_OVERRIDE().

В таблице ниже перечислены свойства, которые были переименованы в Qt 4. Случаи их вхождения в файлы Qt Designer'а - .ui файлах - автоматически преобразуются uic'ом к новым именам.

Имя в Qt 3Имя в Qt 4
QButton::accelQButton::shortcut
QButton::onQButton::checked
QButton::toggleButtonQAbstractButton::checkable
QDial::lineStepQDial::singleStep
QDial::maxValueQDial::maximum
QDial::minValueQDial::minimum
QDialog::modalQDialog::isModal
QLineEdit::editedQLineEdit::modified
QLineEdit::hasMarkedTextQLineEdit::hasSelectedText
QLineEdit::markedTextQLineEdit::selectedText
QObject::nameQObject::objectName
QProgressDialog::progressQProgressDialog::value
QProgressDialog::totalStepsQProgressDialog::maximum
QProgressDialog::wasCancelledQProgressDialog::wasCanceled
QPushButton::iconSetQPushButton::icon
QScrollBar::draggingSliderQScrollBar::sliderDown
QScrollBar::lineStepQScrollBar::singleStep
QScrollBar::maxValueQScrollBar::maximum
QScrollBar::minValueQScrollBar::minimum
QSlider::lineStepQSlider::singleStep
QSlider::maxValueQSlider::maximum
QSlider::minValueQSlider::minimum
QSpinBox::lineStepQSpinBox::singleStep
QSpinBox::maxValueQSpinBox::maximum
QSpinBox::minValueQSpinBox::minimum
QTabBar::currentTabQTabBar::currentIndex
QTabWidget::currentPageQTabWidget::currentWidget
QToolButton::iconSetQToolButton::icon
QToolButton::textLabelQToolButton::text
QWidget::captionQWidget::windowTitle
QWidget::iconQWidget::windowIcon
QWidget::iconTextQWidget::windowIconText

Несколько свойств Qt 3 больше не являются свойствами в Qt 4, но функции доступа все еще существуют как часть Qt 4 API. Они не используются Qt Designer'ом; единственное обстоятельство когда вам нужно беспокоиться о них - в высоко динамичных приложениях, которые используют мета-объектную систему Qt для получения доступа к свойствам. Вот список этих свойств с функциями чтения и записи, которые вы можете использовать вместо них:

Свойство в Qt 3Функция чтения в Qt 4Функция записи в Qt 4
QSqlDatabase::connectOptionsQSqlDatabase::connectOptions()QSqlDatabase::setConnectOptions()
QSqlDatabase::databaseNameQSqlDatabase::databaseName()QSqlDatabase::setDatabaseName()
QSqlDatabase::hostNameQSqlDatabase::hostName()QSqlDatabase::setHostName()
QSqlDatabase::passwordQSqlDatabase::password()QSqlDatabase::setPassword()
QSqlDatabase::portQSqlDatabase::port()QSqlDatabase::setPort()
QSqlDatabase::userNameQSqlDatabase::userName()QSqlDatabase::setUserName()

Некоторые свойства в Qt 4 были удалены, но связанные с ними функции доступа предоставляются для помощи в портировании на Qt 4,если определен QT3_SUPPORT. Когда конвертируются .ui файлы Qt 3 в Qt 4, uic генерирует вызовы функций совместимости с Qt 3. Обратите внимание на то, что это применимо только к свойствам библиотеки Qt3Support, т.е. свойства QT3_SUPPORT из других библиотек при конвертации .ui файлов из Qt 3 в Qt 4 должны портироваться вручную.

В таблице ниже перечислены эти свойства с функциями чтения и записи, которые вы можете использовать вместо них. Документация для отдельных функций разъясняет как заменить их функциями, не являющимися функциями совместимости Qt 4.

Свойство в Qt 3Функция чтения Qt 4 (QT3_SUPPORT)Функция записи Qt 4 (QT3_SUPPORT)
QMenuBar::separatorQMenuBar::separator()QMenuBar::setSeparator()
QPushButton::menuButtonQPushButton::isMenuButton()Нет данных
QTabWidget::marginQTabWidget::margin()QTabWidget::setMargin()
QTextEdit::textFormatQTextEdit::textFormat()QTextEdit::setTextFormat()
QWidget::backgroundBrushQWidget::backgroundBrush()Нет данных
QWidget::backgroundModeQWidget::backgroundMode()QWidget::setBackgroundMode()
QWidget::backgroundOriginQWidget::backgroundOrigin()QWidget::setBackgroundOrigin()
QWidget::colorGroupQWidget::colorGroup()QWidget::setColorGroup()
QWidget::customWhatsThisQWidget::customWhatsThis()QWidget::setCustomWhatsThis()
QWidget::inputMethodEnabledQWidget::inputMethodEnabled()QWidget::setInputMethodEnabled()
QWidget::ownCursorQWidget::ownCursor()Нет данных
QWidget::ownFontQWidget::ownFont()Нет данных
QWidget::ownPaletteQWidget::ownPalette()Нет данных
QWidget::paletteBackgroundColorQWidget::paletteBackgroundColor()QWidget::setPaletteBackgroundColor()
QWidget::paletteBackgroundPixmapQWidget::paletteBackgroundPixmap()QWidget::setPaletteBackgroundPixmap()
QWidget::paletteForegroundColorQWidget::paletteForegroundColor()QWidget::setPaletteForegroundColor()
QWidget::underMouseQWidget::underMouse()Нет данных

Следующие свойства Qt 3 и их функции доступа более недоступны в Qt 4. В большинстве случаев Qt 4 предоставляет аналогичную функциональность.

Свойство в Qt 3Эквивалент в Qt 4
QButton::autoRepeatНет данных
QButton::autoResizeВызывайте QWidget:setFixedSize(QWidget::sizeHint()) всякий раз, когда изменяете содержимое.
QButton::exclusiveToggleСмотрите QAbstractButton::autoExclusive.
QButton::pixmapИспользуйте взамен QAbstractButton::icon.
QButton::toggleStateИспользуйте взамен QCheckBox::setState() и QCheckBox::state().
QButton::toggleTypeИспользуйте взамен QCheckBox::setTristate().
QComboBox::autoResizeВызывайте QWidget:setFixedSize(QWidget::sizeHint()) всякий раз, когда изменяете содержимое.
QFrame::contentsRectИспользуйте взамен Q3Frame::contentsRect().
QFrame::marginИспользуйте взамен QWidget::setContentsMargins().
QTabBar::keyboardFocusTabНет данных
QToolButton::offIconSetИспользуйте взамен off component для QAbstractButton::icon.
QToolButton::onIconSetИспользуйте взамен on component для QAbstractButton::icon.
QWidget::microFocusHintНет данных

Явное разделение данных

Qt 4 - первая версия Qt, которая не содержит классы с явным разделением данных. Все классы, которые в Qt 3 были классами с явным разделением данных, стали в Qt 4 неявно разделять данные:

Это означает, что если вы получили копию экземпляра класса (используя operator=() или копирующий конструктор класса), все изменения в копии будут действовать на оригинал и наоборот. Нечего и говорить, такое поведение редко является желательным.

К счастью, почти все приложения Qt 3 не зависят от явного разделения данных. При портировании, обычно вам необходимо удалить только вызовы функции detach() и/или copy(), которые уже не нужны.

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

Например, если у вас есть код

 void asciify(QByteArray array)
 {
     for (int i = 0; i < (int)array.size(); ++i) {
         if ((uchar)array[i] >= 128)
             array[i] = '?';
     }
 }

вы можете записать его в виде

 void asciify(QByteArray &array)
 {
     for (int i = 0; i < array.size(); ++i) {
         if ((uchar)array[i] >= 128)
             array[i] = '?';
     }
 }

(Обратите внимание на символ & в объявлении параметра.)

Отрисовка и перерисовка виджетов

При реализации пользовательских виджетов в Qt 3, можно было использовать QPainter для отрисовки на виджете внешних событий рисования. Это делает возможным интеграцию приложений Qt со сторонними библиотеками и инструментами, которые навязывают свои модели визуализации. Например, виджет должен быть перерисован в слоте с использованием данных, полученных из внешнего источника.

В Qt 4, возможно только рисование на виджете изнутри его функции-обработчика paintEvent(). Это ограничение упрощает взаимодействие Qt с "родными" оконными системами, улучшает быстродействие приложений уменьшая количество операций перерисовки, а также разрешает реализацию свойств для улучшения внешнего вида виджетов, таких как фоновое сохранение.

Обычно мы рекомендуем перепроектировать приложения для выполнения всех операций рисования в функции paintEvent(), откладывая реальное рисование до следующего вызова этой функции. Приложения могут отправлять события рисования для запуска перерисовки и, возможно, для опроса внутреннего состояния вашего виджета чтобы определить, какую часть виджета необходимо перерисовать.

Если вашим приложением использовались в значительной степени асинхронные перерисовки и перепроектирование модели визуализации для выполнения всех операций рисования изнутри функции paintEvent() виджета нереально, возможно придется подумать об использовании промежуточного этапа рисования. При этом подходе одно или более изображений может быть обновлено асинхронно и нарисованы на виджете в событии рисования. Чтобы избежать чрезмерной буферизации может быть стоящим отключение фонового сохранения путем установки у виджета атрибута виджета Qt::WA_PaintOnScreen.

На некоторых платформах атрибут виджета Qt::WA_PaintOutsidePaintEvent можно установить чтобы разрешить отрисовку виджета извне событий рисования.

Замечание: Установка атрибутов виджета для отключения основных средств модели визуализации виджета Qt может также привести к отключению других функций.

QAccel

Класс QAccel был переименован в Q3Accel и перемещен в модуль Qt3Support. В новых приложения у вас есть три варианта:

  1. Вы можете использовать QAction и установить последовательность нажатия клавиш используя QAction::setShortcut().
  2. Вы можете использовать класс QShortcut, предоставляющий функциональность сходную с функциональностью Q3Accel.
  3. Вы можете использовать QWidget::grabShortcut() и обрабатывать события "горячих" клавиш заново реализовав QWidget::event().

Класс Q3Accel также поддерживает многочисленные быстрые клавиши используя один и тот же объект, многократно вызывая Q3Accel::insertItem(). В Qt 4 решение заключается в создании нескольких объектов QShortcut.

QAccessibleInterface

Класс QAccessibleInterface подвергся в Qt 4 некоторым изменениям API для того, чтобы сделать его более согласованным с остальным Qt API.

Если у вас есть классы, которые унаследованы от QAccessibleInterface или одного из его подклассов (QAccessibleObject, QAccessibleWidget и т.д.), вы должны портировать их на новый API QAccessibleInterface.

Смотрите в Виртуальных функциях список виртуальных функций-членов QAccessibleInterface в Qt 3, которые больше не являются виртуальными в Qt 4.

QAccessibleTitleBar

QAccessibleTitleBar был переименован в Q3AccessibleTitleBar и перемещен в библиотеку Qt3Support.

QAction

Класс QAction был перепроектирован в Qt 4 чтобы лучше интегрироваться с другими системами меню. Он объединяет старые классы QMenuItem и QAction в один класс, избегая излишнего дублирования данных и необходимости изучать два разных API.

Старые классы QAction и QActionGroup были переименованы в Q3Action и Q3ActionGroup, соответственно, и перемещены в Qt3Support. Кроме того, новый класс QAction имеет функции совместимости для облегчения перехода на Qt 4. Обратите внимание на то, что при использовании Q3ToolBar и Q3PopupMenu их действия должны быть объектами Q3Action.

Смотрите в Виртуальных функциях список виртуальных функций-членов QAction в Qt 3, которые больше не являются виртуальными в Qt 4.

QActionGroup

Класс QAction был полностью перепроектирован в Qt 4 чтобы лучше интегрироваться с другими системами меню. За подробностями обращайтесь к разделу в QAction.

QApplication

Класс QApplication был разделен на два класса: QCoreApplication и QApplication. Новый класс QApplication унаследован от QCoreApplication и добавляет функциональность, связанную с ГПИ. Фактически, это не имеет последствий для имеющихся приложений Qt.

Кроме того, были сделаны следующие изменения API:

  1. QApplication::allWidgets() и QApplication::topLevelWidgets() использовались для возврата указателя на QWidgetList. Теперь они возвращают QWidgetList.

    Кроме того, QWidgetList изменился с псевдонима типа (typedef) для QPtrList<QWidget> на псевдоним типа (typedef) для QList<QWidget *>. Подробности смотрите ниже в разделе в QWidgetList.

    Например, если у вас есть код

         QWidgetList *list = QApplication::topLevelWidgets();
         QWidgetListIt it(*list);
         QWidget *widget;
         while ((widget = it.current())) {
             if (widget->inherits("MainWindow"))
                 ((MainWindow *)widget)->updateRecentFileItems();
             ++it;
         }
         delete list;

    вы можете записать его в виде

         QWidgetList list = QApplication::topLevelWidgets();
         for (int i = 0; i < list.size(); ++i) {
             if (MainWindow *mainWin = qobject_cast<MainWindow>(list.at(i)))
                 mainWin->updateRecentFileItems();
         }
  2. QApplication::setMainWidget() больше не используется. Когда все окна приложения закрыты, приложение нормально завершает работу.

QAquaStyle

Класс QAquaStyle впервые появился в Qt 3.0, когда впервые был выпущен порт Qt/Mac. Он эмулировал тему "Aqua" от Apple. В Qt 3.1, QAquaStyle устарел с появлением QMacStyle, который использует Appearance Manager для выполнения своей отрисовки.

Класс QAquaStyle более не предоставляется в Qt 4. Используйте вместо него QMacStyle.

QAsciiCache<T>

QAsciiCache<T> был переименован в Q3AsciiCache<T> и перемещен в библиотеку Qt3Support. Его заменил класс QCache<QByteArray, T>.

Подробности читайте в разделе в QCache<T>, заменяя в уме QByteArray на QString.

QAsciiDict<T>

QAsciiDict<T> и QAsciiDictIterator<T> были переименованы в Q3AsciiDict<T> и Q3AsciiDictIterator<T>, соответственно, и перемещены в библиотеку Qt3Support. Их заменили более современные классы QHash<Key, T> и QMultiHash<Key, T>, соответственно, и их соответствующие классы-итераторы.

При портировании на Qt 4 старого кода, который использует Q3AsciiDict<T>, имеется четыре класса, которые вы можете использовать:

Подробности читайте в разделе в QDict<T>, заменяя в уме QByteArray на QString.

QAsyncIO

Класс QAsyncIO использовался для внутренних нужд в Qt 2.x в сочетании с QImageConsumer. Он устарел в Qt 3.0.

Если вы использовали этот механизм в своем приложении, пожалуйста, отправьте сообщение в Task Tracker на веб-сайте Trolltech и мы попытаемся найти удовлетворительную замену.

QBackInsertIterator

Недокументированный класс QBackInsertIterator был удален из библиотеки Qt. Если он необходим в вашем приложении, просто скопируйте исходный код из заголовочного файла <qtl.h> Qt 3.

QBitArray

В Qt 3 QBitArray унаследован от QByteArray. В Qt 4 QBitArray - полностью независимый класс. Это приводит к очень небольшим отличиям для пользователя, за исключением того, что новый класс QBitArray больше не предоставляет любых API QByteArray'а, основанных на байтах. Эти вызовы приведут к появлению ошибки времени компиляции, за исключением вызовов QBitArray::truncate(), чей параметр был количеством байт в Qt 3 и количеством бит в Qt 4.

В Qt 3 QBitArray был классом с явным разделением данных. Для получения дополнительной информации смотрите Явное разделение данных.

Класс QBitVal был переименован в QBitRef.

QButton

Класс QButton был заменен классом QAbstractButton в Qt 4. Классы, такие как QPushButton и QRadioButton, унаследованы от QAbstractButton. В качестве помощи при портировании старых приложений Qt, библиотека Qt3Support содержит класс Q3Button, реализованный на основе нового класса QAbstractButton.

Если вы использовали класс QButton в качестве базового класса для ваших кнопок собственного типа и хотите перенести свой код на новый QAbstractButton, вам нужно знать, что в QAbstractButton нет эквивалента для виртуальной функции Q3Button::drawButton(QPainter *). Решением является повторная реализация QWidget::paintEvent() в вашем подклассе QAbstractButton как приведено ниже:

 void MyButton::paintEvent(QPaintEvent *)
 {
     QPainter painter(this);
     drawButton(&painter);
 }

Функция Q3ButtonЭквивалент QAbstractButton
Q3Button::autoResize()Вызывайте QWidget:setFixedSize(QWidget::sizeHint()) всякий раз, когда изменяете содержимое.
Q3Button::isExclusiveToggle()Используйте взамен QAbstractButton::group() или QAbstractButton::autoExclusive().
Q3Button::pixmap() constQAbstractButton::icon()
Q3Button::setAutoResize()Нет данных
Q3Button::setPixmap(const QPixmap &)QAbstractButton::setIcon(const QIcon &)
Q3Button::setState(ToggleState)Смотрите замечание ниже
Q3Button::setToggleType(ToggleType)Смотрите замечание ниже
Q3Button::state()Смотрите замечание ниже
Q3Button::stateChanged(int)Смотрите замечание ниже
Q3Button::toggleType()Смотрите замечание ниже

Замечания:

  1. В Qt 3 QButton имел "тип переключателя", который мог быть QButton::SingleShot, QButton::Toggle или QButton::Tristate. Новый класс QAbstractButton не поддерживает "три состояния" прямо; взамен эта возможность реализована в QCheckBox. Два других "типа переключателя" (QButton::SingleShot и QButton::Toggle) заменены свойством QAbstractButton::checkable.
  2. В Qt 3 QButton имел "состояние переключателя", которое могло быть QButton::Off, QButton::NoChange или QButton::On. В Qt 4 этот механизм был перемещен в QCheckBox.

Смотрите в Виртуальных функциях список виртуальных функций-членов QButton в Qt 3, которые не являются виртуальными в Qt 4.

Смотрите в Свойствах список свойств QButton в Qt 3, которые изменились в Qt 4.

QButtonGroup

Класс QButtonGroup был полностью перепроектирован в Qt 4. Для совместимости старый класс QButtonGroup был переименован в Q3ButtonGroup и перемещен в Qt3Support. Аналогично, вспомогательные подклассы QHButtonGroup и QVButtonGroup были переименованы в Q3HButtonGroup и Q3VButtonGroup, соответственно, и перемещены в библиотеку Qt3Support.

Старый класс QButtonGroup, также как и Q3ButtonGroup, можно использовать двумя способами:

  1. Группа кнопок является родительским виджетом некоторого количества кнопок, т.е. группа кнопок является аргументом родителя в конструкторе кнопки. Кнопкам назначаются идентификаторы 0, 1, 2 и так далее, в порядке их создания. Q3ButtonGroup может выводить на экран рамку и заголовок, поскольку унаследован от Q3GroupBox.
  2. Группа кнопок является невидимым виджетом и содержащиеся в нем кнопки имеют некоторый другой родительский виджет. При таком использовании, каждая кнопка должна быть вставлена вручную, используя Q3ButtonGroup::insert(), в группу кнопок и задать идентификационный номер.

В отличие от Q3ButtonGroup, новый класс QButtonGroup не унаследован от QWidget. Он очень похож на "скрытый Q3ButtonGroup".

Если вы используете Q3ButtonGroup, Q3HButtonGroup или Q3VButtonGroup в качестве виджета и хотите портировать на Qt 4, вы можете заменить его на QGroupBox. В Qt 4 радио-кнопки с одним и тем же родителем автоматически становятся частью одной группы, так что вам обычно не нужно делать что-нибудь еще. Смотрите также раздел в QGroupBox ниже.

Смотрите в Виртуальных функциях список виртуальных функций-членов QButtonGroup в Qt 3, которые больше не являются виртуальными в Qt 4.

QByteArray

В Qt 3 QByteArray был просто псевдонимом (typedef) для QMemArray<char>. В Qt 4 QByteArray - отдельный класс с высокоуровневым API в стиле QString.

Вот основные известные проблемы при портировании на Qt 4:

  1. Конструктор QMemArray(int size) был заменен на QByteArray(int size, char ch). Второй аргумент определяет, какой символ будет использован для инициализации массива; передавайте '\0' если у вас нет специфичных требований.

    Например, если у вас есть код

     QByteArray ba(64);

    вы можете записать его в виде

     QByteArray ba(64, '\0');
  2. QMemArray::at() возвращал неконстантную ссылку, тогда как новый класс QByteArray::at() возвращает константное значение. Код, похожий на такой
     ba.at(0) = 'X';

    больше не компилируется. Используйте взамен QByteArray::operator[]:

     ba[0] = 'X';
  3. Функция QMemArray::contains(char) была переименована в QByteArray::count(char). Кроме того, теперь имеется функция QByteArray::contains(char), которая возвращает булево значение. Замените старые вызовы contains() на count() или contains(), в зависимости от того, беспокоит ли вас точное количество вхождений символа в байтовый массив или беспокоит только содержится ли символ в массиве или нет.
  4. Новый QByteArray не имеет функции assign(). Вызовы QMemArray::assign(const QMemArray &) можно заменить на вызовы QByteArray::operator=(). Вызовы QMemArray::assign(const T *, uint) не имеют эквивалента в Qt 4; если вы используете ее, решением будет использование QByteArray::fromRawData() и самостоятельно вызывать free() для предотвращения утечки памяти, или использование конструктора QByteArray(const char *, int), который получает глубокую копию (deep copy) данных.
  5. QMemArray::bsearch() и QMemArray::sort() не имеют эквивалента в новом классе QByteArray. Используйте qBinaryFind() и qSort(), если вам нужна эта функциональность.

В Qt 3 QByteArray был классом с явным разделением данных. Для получения дополнительной информации смотрите Явное разделение данных.

QCache<T>

QCache<T> переименован в Q3Cache<T> и перенесен в Qt3Support. Новый класс QCache имеет другой API и получает другой шаблон параметров: QCache<Key, T>.

При портировании на Qt 4, QCache<QString, T> является очевидной заменой для Q3Cache<T>. В следующей таблице приведены различия в API.

Функция Q3Cache<T>Эквивалент QCache<QString, T>
Q3Cache::Q3Cache(int maxCost, int size, bool caseSensitive)Смотрите замечание ниже
Q3Cache::autoDelete()Нет данных
Q3Cache::count()QCache::count() или QCache::size() (эквивалентны)
Q3Cache::setAutoDelete()Смотрите замечание ниже
Q3Cache::size()Нет данных
Q3Cache::statistics()Нет данных
Q3Cache::operator=()Смотрите замечание ниже

Замечания:

  1. Q3Cache требует от пользователя выделения заданного количества сегментов памяти передавая начальное число (по умолчанию 17) в конструктор. По контрасту, новая таблица хэшей QCache'а при необходимости автоматически увеличивает и уменьшает размер, а конструктор не принимает начального числа.
  2. Q3Cache поддерживает не зависящий от регистра поиск - передавая false в качестве второго аргумента в конструктор. Эта возможность не имеет эквивалента в QMultiHash. Вместо этого вызовите QString::toLower() перед вставкой или поиском ключа в хэше.
  3. Функция Q3Cache::insert() возвращает значение bool, которое указывает действительно ли элемент будет вставлен в хэш или нет. Если элемент не был вставлен, то за удаление элемента отвечает вызывающий. Новая функция QCache::insert() возвращает void и либо добавляет его в хэш либо сразу удаляет. Старый код, похожий на такой
     if (!cache.insert(key, object))
         delete object;

    становится

     cache.insert(key, object);
  4. Новый класс QCache всегда получает владение над сохраняемыми элементами (т.е. автоудаление всегда включено). Если вы используете Q3Cache с отключенным автоудалением (изредка полезно по умолчанию), вы не можете использовать QCache как прямую замену. Один неуклюжий трюк, который хорошо работает на практике, заключается в использовании QCache<QString T *> вместо QCache<QString, T>. В этом случае QCache владеет указателями, а не объектами, на которые ссылаются указатели. Например,
         Q3Cache<QWidget> cache;
         cache.insert(widget->name(), widget);
         ...
         QWidget *foo = cache.take("foo");
         if (foo)
             foo->show();

    становится

         typedef QWidget *QWidgetPtr;
         QCache<QString, QWidgetPtr> cache;
         cache.insert(widget->name(), new QWidgetPtr(widget));
         ...
         QWidgetPtr *ptr = cache.take("foo");
         if (ptr) {
             QWidget *foo = *ptr;
             delete ptr;
             foo->show();
         }

    Альтернативой является продолжение использования Q3Cache.

QCacheIterator<T> был переименован в Q3CacheIterator<T> и перемещен в библиотеку Qt3Support. Новый класс QCache не предлагает никаких типов итераторов.

QCanvas

Классы модуля canvas были переименованы и перемещены в библиотеку Qt3Support.

Имя класса в Qt 3Класс совместимости в Qt 4
QCanvasQ3Canvas
QCanvasEllipseQ3CanvasEllipse
QCanvasItemQ3CanvasItem
QCanvasItemListQ3CanvasItemList
QCanvasLineQ3CanvasLine
QCanvasPixmapQ3CanvasPixmap
QCanvasPixmapArrayQ3CanvasPixmapArray
QCanvasPolygonQ3CanvasPolygon
QCanvasPolygonalItemQ3CanvasPolygonalItem
QCanvasRectangleQ3CanvasRectangle
QCanvasSplineQ3CanvasSpline
QCanvasSpriteQ3CanvasSprite
QCanvasTextQ3CanvasText
QCanvasViewQ3CanvasView

Каркас Графического представления заменил QCanvas. Подробности о портировании на Графическое представление смотрите в Переход на Графическое представление.

QColor

В Qt 4 QColor является типом-значением наподобие QPoint или QRect. Код, зависимый от графической системы, был реализован в QColormap.

Функция QColor::maxColors() заменена функцией QColormap::size().

Функция QColor::numBitPlanes() заменена функцией QColormap::depth().

Предопределенные цвета Qt
Qt::color0Qt::color1Qt::blackQt::white
Qt::darkGrayQt::grayQt::lightGrayQt::red
Qt::greenQt::blueQt::cyanQt::magenta
Qt::yellowQt::darkRedQt::darkGreenQt::darkBlue
Qt::darkCyanQt::darkMagentaQt::darkYellowQt::transparent

Предварительно определенные цвета, приведенные в таблице выше, были статическими объектами QColor в Qt 3. В Qt 4 они являются значениями перечисления типа Qt::GlobalColor. Благодаря неявному конструктору QColor(Qt::GlobalColor), в большинстве контекстов значения перечисления автоматически конвертируются в объекты QColor. Изредка вам может понадобиться приведение типа.

Например, если у вас есть код

 QColor lightCyan = Qt::cyan.light(180);

вы можете записать его в виде

 QColor lightCyan = QColor(Qt::cyan).light(180);

QColorGroup

В Qt 3 QPalette состоял из трех объектов QColorGroup. В Qt 4 (редко используемая) абстракция QColorGroup была удалена. Для совместимости на уровне исходных кодов, класс QColorGroup доступен когда определен QT3_SUPPORT.

Новый QPalette продолжает работать на основе цветовых групп, указанных посредством значений перечисления (QPalette::Active, QPalette::Disabled и QPalette::Inactive). В нем также имеется концепция текущей цветовой группы, которую вы можете установить используя QPalette::setCurrentColorGroup().

Объект QPalette, возвращенный QWidget::palette(), возвращает QPalette, инициализированную корректной текущей цветовой группы для виджета. Это означает, что если у вас есть код наподобие такого

 painter.setBrush(colorGroup().brush(QColorGroup::Text));

то вы можете просто заменить colorGroup() на palette():

 painter.setBrush(palette().brush(QPalette::Text));

QColorDrag

Класс QColorDrag был переименован в Q3ColorDrag и перемещен в библиотеку Qt3Support. В Qt 4 используйте взамен QMimeData и вызовите QMimeData::setColor() для установки цвета.

QComboBox

В Qt 3 список выбора использовался для вывода на экран содержимого виджета QComboBox, получить доступ к нему можно используя функцию listBox(). В Qt 4 стандартный список выбора предоставляется виджетом QListView, и можно получить доступ с помощью функции view().

Смотрите в Виртуальных функциях список виртуальных функций-членов QComboBox в Qt 3, которые больше не являются виртуальными в Qt 4.

QCString

В Qt 3 QCString наследовался от QByteArray. Основной недостаток этого подхода заключается в том, что пользователь несет ответственность за обеспечение того, что строка является нуль-терминированной. Другой важной проблемой было то, что преобразования между QCString и QByteArray часто дают сбивающие с толку результаты. (Смотрите обзор подводных камней в статье Внимание! Бинарные и символьные данные в Qt Quarterly.)

Qt 4 решает эту проблему объединив классы QByteArray и QCString в один класс с именем QByteArray. Большинство функций, которые до этого были в QCString, были перемещены в QByteArray. С проблемой символа '\0' справились выделением в QByteArray одного дополнительного байта, который всегда установлен равным '\0'. Например:

 QByteArray ba("Hello");
 ba.size();             // returns 5 (the '\0' is not counted)
 ba.length();           // returns 5
 ba.data()[5];          // returns '\0'

Библиотека Qt3Support содержит класс с именем Q3CString, который унаследован от нового класса QByteArray и который расширяет его для предоставления API, близкого к старому классу QCString настолько, насколько возможно. Обратите внимание на то, что следующие функции не представляются Q3CString:

Следующие функции потеряли свой последний аргумент, который указывает был ли поиск чувствительным к регистру или нет:

В обоих случаях решением является преобразование QCString в QString и использовании взамен соответствующих функций QString.

Также знайте, что QCString::size() (унаследовано от QByteArray) использовался для возвращения размера символьных данных включая '\0'-терминатор, тогда как новая QByteArray::size() является только синонимом для QByteArray::length(). Это принесет QByteArray в строке с QString.

При портировании на Qt 4 вхождения QCString должны быть заменены на QByteArray или QString. В следующей таблице приведены отличия в API между классом Q3CString и классами QByteArray и QString Qt 4:

Функция Q3CStringЭквивалент в Qt 4
Q3CString::Q3CString(const char *, uint)Смотрите замечание ниже
Q3CString::Q3CString(int)QByteArray::QByteArray(int, char)
Q3CString::leftJustify()QString::leftJustified()
Q3CString::length()QByteArray::length() или QByteArray::size() (эквивалентны)
Q3CString::lower()QByteArray::toLower()
Q3CString::rightJustify()QString::rightJustified()
Q3CString::setExpand()Смотрите замечание ниже
Q3CString::simplifyWhiteSpace()QByteArray::simplified()
Q3CString::sprintf()QString::sprintf()
Q3CString::stripWhiteSpace()QByteArray::trimmed()
Q3CString::toDouble()QString::toDouble()
Q3CString::toFloat()QString::toFloat()
Q3CString::toInt()QString::toInt()
Q3CString::toLong()QString::toLong()
Q3CString::toShort()QString::toShort()
Q3CString::toUInt()QString::toUInt()
Q3CString::toULong()QString::toULong()
Q3CString::toUShort()QString::toUShort()
Q3CString::upper()QByteArray::toUpper()

Замечания:

  1. Q3CString(const char *str, uint max) создаёт строку длиной strlen(str) или max - 1, что короче. QByteArray(const char *data, int size) создаёт байтовый массив, содержащий ровно size байт.

    Например, если у вас есть код

         QCString str1("Hello", 4);           // "Hel"
         QCString str2("Hello world!", n);

    вы можете записать его в виде

         QByteArray str1("Hello", 3);
         QByteArray str2("Hello world!");
         str2.truncate(n - 1);
  2. Q3CString::setExpand(uint index, char ch) не имеет эквивалента в Qt 4.

    Например, если у вас есть код

         QCString str("Hello world");
         str.setExpand(16, '\n');            // "Hello world     \n"

    вы можете записать его в виде

         QByteArray str("Hello world");
         while (str.size() < 16)
             str += ' ';
         str += '\n';

Так как старый класс QCString унаследован от QByteArray, все что сказано в разделе QByteArray также применимо и для QCString.

QCustomEvent

В Qt 3 разработчики могли создать пользовательское событие создавая новый QCustomEvent, и отправляя соответствующие данные другим компонентам в приложении передавая указатель void, либо на структуру, либо используя функцию setData(). Объекты могут получать пользовательские события, реализовав функцию customEvent() и получив доступ к сохраненным данным, используя функцию data() события.

В Qt 4 пользовательские события создаются созданием подклассов QEvent. Данные зависимые от событий могут быть сохранены способом, который подходит для вашего приложения. Пользовательские события по-прежнему доставляются каждой функции-обработчику customEvent() объекта, но как объекты QEvent лучше, чем как устаревшие объекты QCustomEvent.

QDataBrowser

Класс QDataBrowser был переименован в Q3DataBrowser и перемещен в библиотеку Qt3Support. В Qt 4.2 вы должны использовать класс QDataWidgetMapper для создания дата-ориентированных (data-aware) форм.

Обзор новых классов SQL смотрите в Модуле QtSql.

QDataPump

Класс QDataPump использовался для внутренних нужд в Qt 2.x в сочетании с QImageConsumer. Он устарел в Qt 3.0.

Если вы использовали этот механизм в своем приложении, пожалуйста, отправьте сообщение в Task Tracker на веб-сайте Trolltech и мы попытаемся найти удовлетворительную замену.

QDataSink

Класс QDataSink использовался для внутренних нужд в Qt 2.x в сочетании с QImageConsumer. Он устарел в Qt 3.0.

Если вы использовали этот механизм в своем приложении, пожалуйста, отправьте сообщение в Task Tracker на веб-сайте Trolltech и мы попытаемся найти удовлетворительную замену.

QDataSource

Класс QDataSource использовался для внутренних нужд в Qt 2.x в сочетании с QImageConsumer. Он устарел в Qt 3.0. Если вы использовали этот механизм в своем приложении, пожалуйста, отправьте сообщение в Task Tracker на веб-сайте Trolltech и мы попытаемся найти удовлетворительную замену.

QDataTable

Класс QDataTable был переименован в Q3DataTable и перемещен в библиотеку Qt3Support. В Qt 4.2 вы должны использовать класс QDataWidgetMapper для создания дата-ориентированных (data-aware) форм.

Обзор новых классов SQL смотрите в Модуле QtSql.

QDataView

Класс QDataView был переименован в Q3DataView и перемещен в библиотеку Qt3Support. В Qt 4.2 вы должны использовать класс QDataWidgetMapper для создания дата-ориентированных (data-aware) форм.

Обзор новых классов SQL смотрите в Модуле QtSql.

QDateEdit

В Qt 4 класс QDateEdit является вспомогательным классом, основанным на QDateTimeEdit. Старый класс был переименован в Q3DateEdit и перемещен в библиотеку Qt3Support.

Смотрите в Виртуальных функциях список виртуальных функций-членов QDateEdit в Qt 3, которые больше не являются виртуальными в Qt 4.

QDateTimeEditBase

Класс QDateTimeEditBase был переименован в Q3DateTimeEditBase и перемещен в Qt3Support. Используйте взамен QDateTimeEdit или QAbstractSpinBox.

QDateTimeEdit

Старый класс QDateTimeEdit был переименован в Q3DateTimeEditBase и перемещен в Qt3Support. Новый класс QDateTimeEdit в Qt 4 был переписан с нуля для предоставления большей гибкого и мощного API.

Смотрите в Виртуальных функциях список виртуальных функций-членов QDateTimeEdit в Qt 3, которые больше не являются виртуальными в Qt 4.

QDeepCopy<T>

Класс QDeepCopy<T> в Qt 3 предоставлял способ обеспечения того, что неявно разделяющие данные и явно разделяющие данные классы указывают на уникальные данные. Это было необходимо поскольку подсчет ссылок в контейнерных классах Qt был сделан потоконебезопасным способом.

Начиная с Qt 4 QDeepCopy<T> был переименован в Q3DeepCopy<T> и перемещен в библиотеку Qt3Support. Удаление его из существующего кода не вызывает затруднений.

Например, если у вас есть код

 QString str1 = "I am a string";
 QDeepCopy<QString> str2 = str1;
 QString str3 = QDeepCopy<QString>(str2);

вы можете записать его в виде

 QString str1 = "I am a string";
 QString str2 = str1;
 QString str3 = str2;

QDial

Смотрите в Виртуальных функциях список виртуальных функций-членов QDial в Qt 3, которые больше не являются виртуальными в Qt 4.

Смотрите в Свойствах список свойств QDial в Qt 3, которые изменились в Qt 4.

QDict<T>

QDict<T> был переименован в Q3Dict<T> и перемещен в Qt3Support. Его заменили более современные классы QHash<Key, T> и QMultiHash<Key, T>.

При портировании на Qt 4 старого кода, использующего QDict<T> имеется четыре класса, которые вы можете использовать:

Класс в Qt 4Когда используется
QMultiHash<QString, T *>Так как Q3Dict<T> основан на указателях и разрешает дублирование ключей, то обычно это более простое преобразование.
QMultiHash<QString, T>Если тип T является присваиваемым типом данных, вы можете использовать T, а не тип-значение T *. Это часто приводит к более элегантному коду.
QHash<QString, T *>Если вы не используете дублирующиеся ключи, вы можете использовать QHash вместо QMultiHash. QMultiHash унаследован от QHash.
QHash<QString, T>

API Q3Dict<T> и QMultiHash<QString, T *> очень похожи. Основной проблемой является то, что Q3Dict поддерживает автоудаление тогда как QMultiHash - нет.

В следующей таблице приведены различия в API между двумя классами:

Функция Q3DictЭквивалент QMultiHash
Q3Dict::Q3Dict(int size, bool caseSensitive)Смотрите замечания ниже
Q3Dict::autoDelete()Нет данных
Q3Dict::count()QMultiHash::count() или QMultiHash::size() (эквивалентны)
Q3Dict::find(const QString &)QMultiHash::value(const QString &)
Q3Dict::remove(const QString &)QMultiHash::take(const QString &)
Q3Dict::resize(uint)QMultiHash::reserve(int)
Q3Dict::setAutoDelete()Смотрите замечание ниже
Q3Dict::size()QMultiHash::capacity()
Q3Dict::statistics()Нет данных
Q3Dict::operator[](const QString &)Смотрите замечание ниже

Замечания:

  1. Q3Dict требует от пользователя выделения заданного количества сегментов памяти передавая начальное число (по умолчанию 17) в конструктор и/или вызывая позднее Q3Dict::resize(). По контрасту, таблица хэшей QMultiHash'а при необходимости автоматически увеличивает и уменьшает размер, а конструктор не принимает начального числа.
  2. Q3Dict поддерживает не зависящий от регистра поиск - передавая false в качестве второго аргумента в конструктор. Эта возможность не имеет эквивалента в QMultiHash. Вместо этого вызовите QString::toLower() перед вставкой или поиском ключа в хэше.
  3. Q3Dict::size() и QMultiHash::size() имеют разную семантику. Создатель возвращает количество сегментов памяти в контейнере, тогда как последний возвращает количество элементов в контейнере.
  4. Если имеется несколько элементов с одним и тем же ключом, Q3Dict::remove() удалит только самый последний добавленный элемент, тогда как QMultiHash::remove() удалит все элементы, которые разделяют конкретный ключ. Чтобы удалить только самый последний добавленный элемент вызовите QMultiHash::take().
  5. Q3Dict имеет только один оператор [] (Q3Dict::operator[]()), предоставляющий постоянный доступ к значению элемента. QMultiHash также имеет неконстантную перегрузку, которая может быть использована в левой части оператора присваивания. Если вы используете оператор [] на неконстантном QHash с несуществующим элементом, QHash создаст элемент и инициализирует его нулевым указателем. Для этого случая Q3Dict::operator[] будет преобразован к QMultiHash::value(), а не QMultiHash::operator[].

Если вы используете возможность Q3Dict'а -автоудаление (вызывая Q3Dict::setAutoDelete(true)), вам нужно сделать немного больше работы. У вас есть два варианта: Вы либо сами вызываете delete всякий раз, когда удаляете элемент из контейнера, либо вы используете QMultiHash<QString, T> вместо QMultiHash<QString, T *> (т.е. сохраняете непосредственно значения вместо указателей на значения). Здесь мы увидим когда вызвать delete.

В следующей таблице приведены стили, которые вам нужно знать, если вы хотите сами вызывать delete.

Стиль Q3DictСтиль QMultiHash
 dict.replace(key, value);
 delete hash.take(key);
 hash.insert(key, value);
 dict.remove(key, value);
 delete hash.take(key);
 dict.clear();

(also called from Q3Dict's destructor)

 while (!hash.isEmpty()) {
     T *value = *hash.begin();
     hash.erase(hash.begin());
     delete value;
 }

В 99% случаев следующий стиль также работает:

 qDeleteAll(hash);
 hash.clear();

Тем не менее, это может привести к аварийному отказу, если на hash ссылаются из деструктора типа-значения, потому что hash содержит висячие указатели до вызова clear().

Имейте в виду, что деструктор Q3Dict'а автоматически вызывает clear(). Если у вас в пользовательском классе имеется член данных Q3Dict и вы используете возможность автоудаления, то чтобы избежать утечки памяти вам будет нужно вызывать из деструктора вашего класса delete для всех элементов контейнера.

В заключение, QDictIterator<T> (переименованный Q3DictIterator<T>) должен также быть портирован. Имеется не менее четырех классов-итераторов, которые могут использоваться в качестве замены: QHash::const_iterator, QHash::iterator, QHashIterator и QMutableHashIterator. Проще всего использовать при портировании класс QHashIterator<QString, T *>. В следующей таблице приведены различия в API.

Функции Q3DictIteratorЭквивалент в Qt 4
Q3DictIterator::count()QHash::count() или QHash::size()
Q3DictIterator::current()QHashIterator::value()
Q3DictIterator::currentKey()QHashIterator::key()
Q3DictIterator::isEmpty()QHash::isEmpty()
Q3DictIterator::toFirst()QHashIterator::toFront()
Q3DictIterator::operator()()QHashIterator::value()
Q3DictIterator::operator*()QHashIterator::value()
Q3DictIterator::operator++()Смотрите замечание ниже

Знайте, что QHashIterator имеет другой способ перебора элементов, чем Q3DictIterator. Типичный цикл с Q3DictIterator выглядит примерно так:

 Q3DictIterator<QWidget> i(dict);
 while (i.current() != 0) {
     do_something(i.currentKey(), i.current());
     ++i;
 }

Here's the equivalent QHashIterator loop:

 QHashIterator<QString, QWidget *> i(hash);
 while (i.hasNext()) {
     i.next();                   // must come first
     do_something(i.key(), i.value());
 }

За подробностями обращайтесь к Итераторам в стиле Java.

QDir

Следующие используемые функции имеют булев параметр acceptAbsPath, который по умолчанию равен true:

В Qt 3, если acceptAbsPath равен true, имя файла начинающееся с '/' возвращалось без изменений; если acceptAbsPath равен false, в начало имени файла добавляется абсолютный путь. Например:

Текущий каталогИмя файлаacceptAbsPathПуть к файлу
/home/tsmithindex.htmltrue/home/tsmith/index.html
false/home/tsmith/index.html
/home/tsmith/index.htmltrue/index.html
false/home/tsmith/index.html

В Qt 4 этот параметр больше не доступен. Если вы используете это в вашем коде, вы можете проверить что QDir::isRelativePath() возвращает взамен false.

Например, если у вас есть код

 QDir dir("/home/tsmith");
 QString path = dir.filePath(fileName, false);

вы можете записать его в виде

 QDir dir("/home/tsmith");
 QString path;
 if (dir.isRelativePath(fileName))
     path = dir.filePath(fileName);
 else
     path = fileName;

QDir::encodedEntryList() была удалена.

fileInfoList(), entryInfoList() и drives() возвращают теперь QList<QFileInfo>, а не QPtrList<QFileInfo> *. Код, использующий эти методы, не будет работать с библиотекой Qt3Support и вместо этого должен быть адаптирован.

Смотрите в Виртуальных функциях список виртуальных функций-членов QDir в Qt 3, которые больше не являются виртуальными в Qt 4.

Совпадения QDir::match() теперь всегда нечувствительны к регистру.

QDir::homeDirPath() была удалена. Используйте взамен QDir::home() и извлекайте путь отдельно.

QDns

Qt 3 использовал свою собственную реализацию протокола DNS и предоставлял низкоуровневый класс QDns. Вместо этого класс Qt 4 QHostInfo использует системную функцию gethostbyname() из потока.

Старый класс QDns был переименован в Q3Dns и перемещен в библиотеку Qt3Support. Новый класс QHostInfo имеет совершенно другой API: Он состоит главным образом из двух статических функций, одна из которых блокирующая (QHostInfo::fromName()), а другая неблокирующая (QHostInfo::lookupHost()). За подробностями обращайтесь к документации класса QHostInfo.

QDockArea

Класс QDockArea был переименован в Q3DockArea и перемещен в библиотеку Qt3Support. В Qt 4 QMainWindow самостоятельно обрабатывает области присоединения и панели инструментов. За подробностями обращайтесь к документации QMainWindow.

QDockWindow

Старый класс QDockWindow был переименован в Q3DockWindow и перемещен в библиотеку Qt3Support. В Qt 4 имеется новый класс QDockWidget с отличающимся API. За подробностями обращайтесь к документации класса.

Смотрите в Виртуальных функциях список виртуальных функций-членов QDockWidget в Qt 3, которые больше не являются виртуальными в Qt 4.

Замечание: Свойство Q3DockWindow'а, horizontallyStretchable, может быть реализуется в QDockWidget с помощью политик размера.

QDragObject

Класс QDragObject был переименован в Q3DragObject и перемещен в библиотеку Qt3Support. В Qt 4 его заменил класс QMimeData. За подробностями обращайтесь к документации класса.

Обратите внимание на то, что режим перетаскивания Q3DragObject::DragCopyOrMove интерпретируется иначе, чем режим QDragObject::DragCopyOrMove в Qt 3. В Qt 3 операция перемещения выполнялась по умолчанию, а для выполнения операции копирования пользователь удерживал нажатой клавишу Ctrl. В Qt 4 по умолчанию выполняется операция копирования; для выполнения операции перемещения пользователь удерживает нажатой клавишу Shift.

Смотрите Портирование на Qt 4 (Перетаскивание) для сравнения API перетаскивания в Qt 3 и Qt 4.

QDropSite

Класс QDropSite был переименован в Q3DropSite и перемещен в библиотеку Qt3Support.

Класс QDropSite устарел еще со времен Qt 2.0. Все что он делает - вызывает QWidget::setAcceptDrops(true).

Например, если у вас есть код

 class MyWidget : public QWidget, public QDropSite
 {
 public:
     MyWidget(const QWidget *parent)
         : QWidget(parent), QDropSite(this)
     {
     }
     ...
 }

вы можете записать его в виде

 class MyWidget : public QWidget
 {
 public:
     MyWidget(const QWidget *parent)
         : QWidget(parent)
     {
         setAcceptDrops(true);
     }
     ...
 }

Смотрите Портирование на Qt 4 (Перетаскивание) для сравнения API перетаскивания в Qt 3 и Qt 4.

QEditorFactory

Класс QEditorFactory был переименован в Q3EditorFactory и перемещен в библиотеку Qt3Support.

Обзор новых классов SQL смотрите в Модуле QtSql.

QEventLoop

В Qt 3 QEventLoop сочетает цикл обработки событий Qt и диспетчеризацию событий. В Qt 4 эти задачи теперь разнесены по двум отдельным классам: QEventLoop и QAbstractEventDispatcher.

Если вы создали подкласс QEventLoop для интеграции с циклом обработки событий другой библиотеки, взамен вы должны создать подкласс QAbstractEventDispatcher. За подробностями обращайтесь к документации класса.

QFileDialog

Класс QFileDialog был полностью переписан в Qt 4. Он предоставляет большую часть функциональности старого класса QFileDialog, но с другим API. Добавление некоторой функциональности, например, возможности предварительного просмотра файлов, ожидается в следующих выпусках Qt 4.

Старые классы QFileDialog, QFileIconProvider и QFilePreview были переименованы в Q3FileDialog, Q3FileIconProvider и Q3FilePreview, соответственно, и перемещены в Qt3Support. Вы можете использовать их, если вам нужна некоторая функциональность, еще не предоставляемая новым классом QFileDialog.

В следующей таблице перечислены функции, которые были переименованы или удалены в Qt 4.

Старая функцияЭквивалент в Qt 4
Q3FileDialog::addFilter(const QString &)Смотрите замечание ниже
Q3FileDialog::addLeftWidget(QWidget *)Нет данных
Q3FileDialog::addRightWidget(QWidget *)Нет данных
Q3FileDialog::addToolButton(QAbstractButton *, bool separator)Нет данных
Q3FileDialog::addWidgets(QLabel *, QWidget *, QPushButton *)Нет данных
Q3FileDialog::dir()QFileDialog::directory()
Q3FileDialog::dirPath()QFileDialog::directory().path()
Q3FileDialog::iconProvider()Нет данных
Q3FileDialog::isContentsPreviewEnabled()Нет данных
Q3FileDialog::isInfoPreviewEnabled()Нет данных
Q3FileDialog::previewMode()Нет данных
Q3FileDialog::rereadDir()Нет данных
Q3FileDialog::resortDir()Нет данных
Q3FileDialog::selectAll(bool)Нет данных
Q3FileDialog::setContentsPreview(QWidget *, Q3FilePreview *)Нет данных
Q3FileDialog::setContentsPreviewEnabled(bool)Нет данных
Q3FileDialog::setDir(const QString &)QFileDialog::setDirectory(const QString &)
Q3FileDialog::setFilters(const char **)Q3FileDialog::setFilters(const QStringList &)
Q3FileDialog::setIconProvider(Q3FileIconProvider *)Нет данных
Q3FileDialog::setInfoPreview(QWidget *, Q3FilePreview *)Нет данных
Q3FileDialog::setInfoPreviewEnabled(bool)Нет данных
Q3FileDialog::setPreviewMode(PreviewMode)Нет данных
Q3FileDialog::setSelectedFilter(const QString &)QFileDialog::selectFilter(const QString &)
Q3FileDialog::setSelectedFilter(int)Смотрите замечание ниже
Q3FileDialog::setSelection(const QString &)QFileDialog::selectFile(const QString &)
Q3FileDialog::setShowHiddenFiles(bool)showHidden()
Q3FileDialog::setUrl(const QUrlOperator &)Нет данных
Q3FileDialog::showHiddenFiles()Нет данных
Q3FileDialog::url()QUrl::fromLocalFile(QFileDialog::directory())
Старые сигналыЭквивалент в Qt 4
Q3FileDialog::fileHighlighted(const QString &)Нет данных
Q3FileDialog::fileSelected(const QString &)QFileDialog::filesSelected(const QStringList &)
Q3FileDialog::dirEntered(const QString &)Нет данных
Q3FileDialog::filterSelected(const QString &)Нет данных

Замечания:

  1. Функция Q3FileDialog::addFilter(const QString &) не имеет прямого эквивалента в новом классе QFileDialog. Используйте взамен QFileDialog::setFilters().

    Например, если у вас есть код

         fileDialog->addFilter(tr("JPEG files (*.jpg *.jpeg)"));

    вы можете записать его в виде

         QStringList filters = fileDialog->filters();
         filters << tr("JPEG files (*.jpg *.jpeg)");
         fileDialog->setFilters(filters);
  2. Перегрузке Q3FileDialog::setSelectedFilter(int) нет прямого эквивалента в новом QFileDialog. Используйте взамен QFileDialog::selectFilter(const QString &).

    Например, если у вас есть код

         fileDialog->setSelectedFilter(3);

    вы можете записать его в виде

         fileDialog->selectFilter(fileDialog->filters().at(3));

Смотрите в Виртуальных функциях список виртуальных функций-членов QFileDialog в Qt 3, которые больше не являются виртуальными в Qt 4.

QFocusData

Класс QFocusData не доступен в Qt 4. Некоторая его функциональность доступна через функции QWidget::nextInFocusChain() и QWidget::focusNextPrevChild().

QFocusEvent

Функции setReason() более нет в Qt 4. Необходимо определить причину при создании события фокуса.

QFont

QFont::Script была перемещена в QFontDatabase::WritingSystem.

QFrame

Уменьшив в Qt 4 количество свойств и виртуальных функций класс QFrame был сделан более легким. Уменьшение количества виртуальных функций важно, поскольку QFrame является базовым классом многих классов Qt.

Вот обзор изменений:

Чтобы помочь с портированием библиотека Qt3Support содержит класс Q3Frame, который унаследован от QFrame и предоставляет API, аналогичный API старого класса QFrame. Если в вашем приложении вы наследовали от QFrame, вы можете захотеть использовать Q3Frame в качестве базового класса как первый этап процесса портирования, а позднее перейти на новый класс QFrame.

Смотрите в Виртуальных функциях список виртуальных функций-членов QFrame в Qt 3, которые больше не являются виртуальными в Qt 4.

QFtp

QFtp больше не унаследован от QNetworkProtocol. За подробностями обращайтесь к разделу в QNetworkProtocol.

Старый класс QFtp был переименован в Q3Ftp и перемещен в библиотеку Qt3Support.

QGLayoutIterator

Класса QGLayoutIterator больше нет в Qt 4. Это приводит к отличиям только если вы реализовали пользовательские менеджеры компоновки (т.е., создали подклассы QLayout).

Новый подход значительно проще: Он состоит в повторной реализации QLayout::itemAt() и QLayout::takeAt(). Эти функции работают с индексами, устраняя необходимость в классе-итераторе компоновки.

QGrid

Класс QGrid теперь доступен только как Q3Grid в Qt 4. Вы можете добиться такого же результата, что и с QGrid создав QWidget с компоновкой сетки:

Например, если у вас есть код

 QGrid *grid = new QGrid(2, Qt::Horizontal);
 QPushButton *child1 = new QPushButton(grid);
 QPushButton *child2 = new QPushButton(grid);
 QPushButton *child3 = new QPushButton(grid);
 QPushButton *child4 = new QPushButton(grid);

вы можете записать его в виде

 QWidget *grid = new QWidget;
 QPushButton *child1 = new QPushButton(grid);
 QPushButton *child2 = new QPushButton(grid);
 QPushButton *child3 = new QPushButton(grid);
 QPushButton *child4 = new QPushButton(grid);

 QVBoxLayout *layout = new QVBoxLayout;
 layout->addWidget(child1, 0, 0);
 layout->addWidget(child2, 0, 1);
 layout->addWidget(child3, 1, 0);
 layout->addWidget(child4, 1, 1);
 grid->setLayout(layout);

QGridLayout

Смотрите в Виртуальных функциях список виртуальных функций-членов QGridLayout в Qt 3, которые больше не являются виртуальными в Qt 4.

QGridView

Класс QGridView был переименован в Q3GridView и перемещен в библиотеку Qt3Support. В Qt 4 мы рекомендуем использовать для представления табличных данных QTableView или QAbstractItemView.

Обзор новых классов представления элементов смотрите в Программирование модель/представление.

QGroupBox

Класс QGroupBox был перепроектирован в Qt 4. Многие из функциональных возможностей старого класса QGroupBox можно получить использовав класс Q3GroupBox из библиотеки Qt3Support.

Новый QGroupBox более легкий. Он не пытается дублировать функциональность, уже предоставляемую QGridLayout, и он не унаследован от QFrame. В результате, следующие члены были удалены:

Естественно, свойства columns и orientation также удалены.

Если ваше приложение зависит от недостающей функциональности, в качестве помощи при портировании вы можете использовать Q3GroupBox вместо QGroupBox.

Смотрите в Виртуальных функциях список виртуальных функций-членов QGroupBox в Qt 3, которые больше не являются виртуальными в Qt 4.

QHBox

Класс QHBox теперь доступен только как Q3HBox в Qt 4. Вы можете добиться такого же результата, что и с QHBox создав QWidget с горизонтальной компоновкой:

Например, если у вас есть код

 QHBox *hbox = new QHBox;
 QPushButton *child1 = new QPushButton(hbox);
 QPushButton *child2 = new QPushButton(hbox);

вы можете записать его в виде

 QWidget *hbox = new QWidget;
 QPushButton *child1 = new QPushButton;
 QPushButton *child2 = new QPushButton;

 QHBoxLayout *layout = new QHBoxLayout;
 layout->addWidget(child1);
 layout->addWidget(child2);
 hbox->setLayout(layout);

Обратите внимание на то, что дочерние виджеты автоматически не размещаются в компоновке виджета; вам нужно вручную добавить каждый виджет в QHBoxLayout.

QHeader

Класс QHeader был переименован в Q3Header и перемещен в библиотеку Qt3Support. В Qt 4 его заменил класс QHeaderView.

Обзор новых классов представления элементов смотрите в Программирование модель/представление.

QHGroupBox

Класс QHGroupBox был переименован в Q3HGroupBox и перемещен в библиотеку Qt3Support. Qt 4 не предоставляет конкретного класса замены для QHGroupBox поскольку QGroupBox спроектирован виджетом обобщенного контейнера. В результате, вам нужно обеспечить вашу собственную компоновку для любых дочерних виджетов.

Для получения дополнительной информации о портировании кода, который использует групповые рамки, смотрите #QGroupBox.

QHttp

QHttp больше не унаследован от QNetworkProtocol. За подробностями обращайтесь к разделу в QNetworkProtocol.

Старые классы QHttp, QHttpHeader, QHttpRequestHeader и QHttpResponseHeader были переименованы в Q3Http, Q3HttpHeader, Q3HttpRequestHeader и Q3HttpResponseHeader, соответственно, и перенесены в библиотекуQt3Support.

QIconFactory

Класс QIconFactory больше не является частью Qt. Его заменил класс QIconEngine.

QIconSet

Класс QIconSet больше не является частью Qt. Его заменил класс QIcon.

QIconView

Классы QIconView, QIconViewItem, QIconDrag и QIconDragItem были переименованы в Q3IconView, Q3IconViewItem, Q3IconDrag и Q3IconDragItem, соответственно, и перемещены в библиотеку Qt3Support. Вместо этого в новых приложениях Qt должен использоваться QListWidget или его базовый класс QListView, и вызывать QListView::setViewMode(QListView::IconMode) для получения внешнего вида "в виде пиктограмм".

Обзор новых классов представления элементов смотрите в Программирование модель/представление.

QImageDrag

Класс QImageDrag был переименован в Q3ImageDrag и перемещен в Qt3Support. В Qt 4 используйте взамен QMimeData и вызовите QMimeData::setImage() для установки изображения.

Смотрите Портирование на Qt 4 (Перетаскивание) для сравнения API перетаскивания в Qt 3 и Qt 4.

QImageIO

Класс QImageIO был разделена на два класса: QImageReader и QImageWriter. В таблице ниже показано соответствие двух API:

Функция в Qt 3Эквиваленты в Qt 4
QImageIO::description()QImageWriter::description()
QImageIO::fileName()QImageReader::fileName() и QImageWriter::fileName()
QImageIO::format()QImageReader::format() и QImageWriter::format()
QImageIO::gamma()QImageWriter::gamma()
QImageIO::image()Возвращаемое значение функции QImageReader::read()
QImageIO::inputFormats()QImageReader::supportedImageFormats()
QImageIO::ioDevice()QImageReader::device() и QImageWriter::device()
QImageIO::outputFormats()QImageWriter::supportedImageFormats()
QImageIO::parameters()Нет данных
QImageIO::quality()QImageWriter::quality()
QImageIO::read()QImageReader::read()
QImageIO::setDescription()QImageWriter::setDescription()
QImageIO::setFileName()QImageReader::setFileName() и QImageWriter::setFileName()
QImageIO::setFormat()QImageReader::setFormat() и QImageWriter::setFormat()
QImageIO::setGamma()QImageWriter::setGamma()
QImageIO::setIODevice()QImageReader::setDevice() и QImageWriter::setDevice()
QImageIO::setImage()Аргумент для QImageWriter::write()
QImageIO::setParameters()Нет данных
QImageIO::setQuality()QImageWriter::setQuality()
QImageIO::setStatus()Нет данных
QImageIO::status()QImageReader::error() и QImageWriter::error()
QImageIO::write()QImageWriter::write()

QIntCache<T>

QIntCache<T> был перемещен в модуль Qt3Support. Он был заменен QCache<int, T>.

Подробности читайте в разделе в QCache<T>, заменяя в уме int на QString.

QIntDict<T>

QIntDict<T> и QIntDictIterator<T> были перемещены в Qt3Support. Их заменили более современные классы QHash<Key, T> и QMultiHash<Key, T> и связанные с ними классы-итераторы.

При портировании на Qt 4 старого кода, который использует QIntDict<T>, имеется четыре класса, которые вы можете использовать:

Подробности читайте в разделе в QDict<T>, заменяя в уме int на QString.

QIODevice

API класса QIODevice был упрощен чтобы облегчить создание подклассов и чтобы сделать его работу более ровной с асинхронными устройствами, например, QTcpSocket и QProcess.

У следующих виртуальных функциях изменилось имя или сигнатура:

Функция в Qt 3Комментарий
QIODevice::at() constПереименован в QIODevice::pos().
QIODevice::at(Offset)Переименован в QIODevice::seek().
QIODevice::open(int)Теперь параметр имеет тип QIODevice::OpenMode.
QIODevice::readBlock(char *, Q_ULONG)QIODevice::read(char *, qint64)
QIODevice::writeBlock(const char *, Q_ULONG)QIODevice::write(const char *, qint64)

Замечание: QIODevice::open(QIODevice::OpenMode) больше не является чистой виртуальной.

Следующие функции больше не являются виртуальными или больше не существуют:

QIODevice::getch()Переименовали QIODevice::getChar() и реализовали на основе QIODevice::readData().
QIODevice::putch(int)Переименовали QIODevice::putChar() и реализовали на основе QIODevice::writeData().
QIODevice::readAll()Реализована на основе QIODevice::readData().
QIODevice::readLine(char *, Q_ULONG)Реализована на основе QIODevice::readData()
QIODevice::ungetch(int)Переименовали QIODevice::ungetChar() и искусственно используется внутренним буфером unget.

Флаги IO_xxx были переработаны, а защищенная функция setFlags() удалена. Большинство флагов были ликвидированы, поскольку ошибки лучше обрабатываются реализацией конкретных функций в подклассах QIODevice нежели чем через базовые классы. Флаги доступа к файла, например, IO_ReadOnly и IO_WriteOnly, были перемещены в класс QIODevice чтобы избежать загрязнения глобального пространства имен. В таблице ниже показано соответствие между флагами IO_xxx в Qt 3 и Qt 4 API:

Константа в Qt 3Эквивалент в Qt 4
IO_DirectИспользуйте взамен !QIODevice::isSequential() (обращаем внимание на отрицание).
IO_SequentialИспользуйте взамен QIODevice::isSequential().
IO_CombinedНет данных
IO_TypeMaskНет данных
IO_RawQIODevice::Unbuffered
IO_AsyncНет данных
IO_ReadOnlyQIODevice::ReadOnly
IO_WriteOnlyQIODevice::WriteOnly
IO_ReadWriteQIODevice::ReadWrite
IO_AppendQIODevice::Append
IO_TruncateQIODevice::Truncate
IO_TranslateQIODevice::Text
IO_ModeMaskНет данных
IO_OpenИспользуйте взамен QIODevice::isOpen().
IO_StateMaskНет данных
IO_OkНет данных
IO_ReadErrorНет данных
IO_WriteErrorНет данных
IO_FatalErrorНет данных
IO_ResourceErrorНет данных
IO_OpenErrorНет данных
IO_ConnectErrorНет данных
IO_AbortErrorНет данных
IO_TimeOutErrorНет данных
IO_UnspecifiedErrorНет данных

QIODeviceSource

Класс QIODeviceSource использовался для внутренних нужд в Qt 2.x в сочетании с QImageConsumer. Он устарел в Qt 3.0. Если вы использовали этот механизм в своем приложении, пожалуйста, отправьте сообщение в Task Tracker на веб-сайте Trolltech и мы попытаемся найти удовлетворительную замену.

QLabel

QLabel больше не разрешает автоматического выравнивания по словам при использовании форматированного текста. Вы можете разрешить это вызывая QLabel::setWordWrap() или установив свойство wordWrap. Причиной этого изменения является то, что старое поведение запутывало многих пользователей.

Также QLabel больше не предоставляет свойство autoResize. Взамен вы можете вызвать QWidget::setFixedSize() на метке, с QLabel::sizeHint() в качестве аргумента, всякий раз когда вы меняете содержимое QLabel.

Смотрите в Виртуальных функциях список виртуальных функций-членов QLabel в Qt 3, которые больше не являются виртуальными в Qt 4.

QLayout

В Qt 4 поля всегда обрабатываются компоновщиками; функции QLayout::setSupportsMargin() больше нет.

Функция deleteAllItems() теперь доступна только если определен QT3_SUPPORT. Если вы храните элементы компоновки в QList, вы можете использовать qDeleteAll() чтобы удалить все элементы сразу.

В Qt 3, для изменения поведения при изменении размеров компоновок в виджетах верхнего уровня можно было устанавливать свойство компоновки resizeMode. В Qt 4 это свойство заменено свойством QLayout::sizeConstraint, которое предоставляет больший контроль за поведением компоновки при изменении размеров.

Смотрите также раздел в QLayoutIterator и раздел в QGLayoutIterator.

QLayoutIterator

Класс QLayoutIterator является устаревшим в Qt 4. Он доступен только если определен QT3_SUPPORT. Его можно заменить функциями QLayout::itemAt() и QLayout::takeAt(), которые работают с индексами.

Например, если у вас есть код

     QLayoutIterator it = layout()->iterator();
     QLayoutItem *child;
     while ((child = it.current()) != 0) {
         if (child->widget() == myWidget) {
             it.takeCurrent();
             return;
         ++it;
     }

вы можете записать его в виде

     int i = 0;
     QLayoutItem *child;
     while ((child = layout()->itemAt(i)) != 0) {
         if (child->widget() == myWidget) {
             layout()->takeAt(i);
             return;
         }
         ++i;
     }

QLineEdit

Смотрите в Свойствах список свойств QLineEdit в Qt 3, которые изменились в Qt 4.

Обратите внимание на то, что QLineEdit в Qt 4 более не является подклассом QFrame. Если вам нужно визуально применить стиль к однострочному редактору с рамкой, мы рекомендуем либо использовать QFrame в качестве контейнера для QLineEdit, либо настроить однострочный редактор с помощью таблиц стилей.

QListBox

Классы QListBox, QListBoxItem, QListBoxText и QListBoxPixmap были переименованы в Q3ListBox, Q3ListBoxItem, Q3ListBoxText и Q3ListBoxPixmap, соответственно, и перемещены в библиотеку Qt3Support. В новых приложениях Qt вы должны использовать вместо них QListWidget или его базовый класс QListView.

Обзор новых классов представления элементов смотрите в Программирование модель/представление.

QListView

Классы QListView, QListViewItem, QCheckListItem и QListViewItemIterator были переименованы в Q3ListView, Q3ListViewItem, Q3CheckListItem и Q3ListViewItemIterator, соответственно, и перемещены в библиотеку Qt3Support. Новые приложения Qt должны использовать взамен один из четырех класса: QTreeView или QTreeWidget - для древовидных структур; QListWidget или новый класс QListView - для линейных списков.

Обзор новых классов представления элементов смотрите в Программирование модель/представление.

QLocalFs

Класс QLocalFs больше не является частью открытого Qt API. Он был переименован в Q3LocalFs и перемещен в Qt3Support. Используйте взамен QDir, QFileInfo или QFile.

QMainWindow

Класс QMainWindow был перепроектирован в Qt 4 чтобы предоставить более современный внешний вид и поведение, а также большую гибкость. Для отражения этого был изменен API. Старый класс QMainWindow был переименован в Q3MainWindow и перемещен в Qt3Support. За подробностями обращайтесь к документации класса QMainWindow.

QMemArray<T>

QMemArray<T> был перемещен в Qt3Support. Он был заменен классом QVector<T>.

В следующей таблице приведены различия в API между двумя классами.

QMemArray::assign(const QMemArray<T> &)QVector::operator=()
QMemArray::assign(const T *, uint)Смотрите замечание ниже
QMemArray::duplicate(const QMemArray &)QVector::operator=()
QMemArray::duplicate(const T *, uint)Смотрите замечание ниже
QMemArray::setRawData(const T *, uint)Нет данных
QMemArray::resetRawData(const T *, uint)Нет данных
QMemArray::find(const T &, uint)QVector::indexOf(const T &, int)
QMemArray::contains(const T &)QVector::count(const T &)
QMemArray::sort()qSort()
QMemArray::bsearch(const T &d)qBinaryFind()
QMemArray::at(uint)QVector::operator[]()
QMemArray::operator const T *()QVector::constData()

Замечания:

  1. QMemArray::assign(const T *, uint) и QMemArray::duplicate(const T *, uint) можно заменить на QVector::resize() и qCopy().

    Например, если у вас есть код

         QMemArray<QSize> array;
         ...
         array.assign(data, size);

    вы можете записать его в виде

         QVector<QSize> vector;
         ...
         vector.resize(size);
         qCopy(data, data + size, vector.begin());
  2. QMemArray - класс с явным разделением данных, тогда как QVector - класс с неявным разделением данных. Для получения дополнительной информации смотрите Явное разделение данных.

QMenuBar

В Qt 3 QMenuBar наследовался от QFrame и QMenuData; в Qt 4 он является прямым подклассом QWidget. Приложения, которые предоставляют настраиваемые панели меню, могут получить преимущества возможностей применения стилей, описанные в документе Таблицы стилей Qt.

В Qt 4 невозможно добавить виджеты в панель меню.

QMenuData

В Qt 4 класс QMenu предоставляет виджет меню, который можно использовать во всех местах, где в приложении используются меню. В отличие от QMenuData, QMenu спроектирован вокруг концепции действий, предоставляемых классом QAction, взамен используемых в Qt 3 идентификаторов.

В Qt 3 можно было вставлять виджеты в меню используя специальную перегрузку QMenuData::insertItem(). В Qt 4.2 и старше, класс QWidgetAction может быть использован для обёртывания виджетов для использования в основанных на действиях API Qt 4.

QMessageBox

Функция QMessageBox::iconPixmap() использовалась для возвращения "const QPixmap *". В Qt 4 она возвращает QPixmap.

QMimeSourceFactory

QMimeSourceFactory был переименован в Q3MimeSourceFactory и перемещен в библиотеку Qt3Support. Новые приложения Qt должны взамен использовать Систему ресурсов Qt 4.

QMovie

QMovie API был пересмотрен в Qt 4 чтобы сделать его более совместимым с остальными классами Qt (особенно QImageReader). В таблице ниже приведены изменения.

Функция в Qt 3Эквивалент в Qt 4
QMovie::connectResize()Соединяет с QMovie::resized()
QMovie::connectStatus()Соединяет с QMovie::stateChanged()
QMovie::connectUpdate()Соединяет с QMovie::updated()
QMovie::disconnectResize()Отсоединяет от QMovie::resized()
QMovie::disconnectStatus()Отсоединяет от QMovie::stateChanged()
QMovie::disconnectUpdate()Отсоединяет от QMovie::updated()
QMovie::finished()Используйте взамен QMovie::state()
QMovie::frameImage()Используйте взамен QMovie::currentImage()
QMovie::frameNumber()Используйте взамен QMovie::currentFrameNumber()
QMovie::framePixmap()Используйте взамен QMovie::currentPixmap()
QMovie::getValidRect()Используйте взамен frameRect()
QMovie::isNull()Используйте взамен QMovie::isValid()
QMovie::pause()Используйте взамен QMovie::setPaused(true)
QMovie::paused()Используйте взамен QMovie::state()
QMovie::pushData()Нет данных
QMovie::pushSpace()Нет данных
QMovie::restart()Используйте взамен QMovie::jumpToFrame(0)
QMovie::running()Используйте взамен QMovie::state()
QMovie::step()Используйте взамен QMovie::jumpToFrame() и QMovie::setPaused()
QMovie::step()Используйте взамен QMovie::jumpToNextFrame()
QMovie::steps()Используйте взамен QMovie::currentFrameNumber() и QMovie::frameCount()
QMovie::unpause()Используйте взамен QMovie::setPaused(false)

QMultiLineEdit

Класс QMultiLineEdit в Qt 3 был вспомогательным подклассом QTextEdit, который предоставлял интерфейс, совместимый с классом Qt 2 QMultiLineEdit. В Qt 4 он называется Q3MultiLineEdit, унаследован от Q3TextEdit, и является частью Qt3Support. Используйте QTextEdit в новом коде.

QNetworkProtocol

Классы QNetworkProtocol, QNetworkProtocolFactoryBase, QNetworkProtocolFactory<T> и QNetworkOperation больше не являются частью открытого Qt API. Они были переименованы в Q3NetworkProtocol, Q3NetworkProtocolFactoryBase, Q3NetworkProtocolFactory<T> и Q3NetworkOperation, соответственно, и перемещены в библиотеку Qt3Support.

В приложениях Qt 4 вы можете использовать классы подобно QFtp и QHttp прямо для выполнения действий связанных с файлами на удаленном узле.

QObject

QObject::children() теперь возвращает QObjectList взамен указателя на QObjectList. Смотрите также примечания к QObjectList ниже.

Используйте QObject::findChildren() (или qFindChildren() если вам нужна совместимость с MSVC 6) взамен QObject::queryList(). Например:

     QList<QWidget *> myWidgets = qFindChildren<QWidget *>(myParent);

QObject::killTimers() была удалена, поскольку была небезопасна для использования в подклассе. (Обычно подкласс не знает использует ли базовый класс таймеры или нет.)

Свойство QObject::name было переименовано в QObject::objectName.

QObject::objectTrees() была удалена. Если вы в основном заинтересованы в виджетах, используйте QApplication::allWidgets() или QApplication::topLevelWidgets().

QObjectDictionary

Класс QObjectDictionary является синонимом для QAsciiDict<QMetaObject>. Смотрите раздел в QAsciiDict<T>.

QObjectList

В Qt 3 класс QObjectList был псевдонимом (typedef) для QPtrList<QObject>. В Qt 4 он является псевдонимом (typedef) для QList<QObject *>. Смотрите раздел в QPtrList<T>.

QPaintDevice

Для повторной реализации бэкендов рисовальщика предварительно необходимо повторно реализовать виртуальную функцию QPaintDevice::cmd(). Эта функция удалена и должна быть заменена функцией QPaintDevice::paintEngine() и абстрактным классом QPaintEngine. QPaintEngine предоставляет виртуальные функции для всех операций рисования, которые могут выполняться в бэкенде рисовальщика.

bitBlt() и copyBlt() теперь являются только функциями совместимости. Используйте взамен QPainter::drawPixmap().

QPaintDeviceMetrics

Все использовавшиеся функции, представляемые классом QPaintDeviceMetrics, теперь перемещены в QPaintDevice.

Например, если у вас есть код

     QPaintDeviceMetrics metrics(widget);
     int deviceDepth = metrics.depth();

вы можете записать его в виде

     int deviceDepth = widget->depth();

Для совместимости старый класс QPaintDeviceMetrics был переименован в Q3PaintDeviceMetrics и перемещен в Qt3Support.

QPainter

Класс QPainter подвергся в Qt 4 некоторым изменениям, поскольку изменился способ отрисовки прямоугольников. В Qt 4 результат отрисовки QRect с пером толщиной в 1 пиксел на 1 пиксел шире и на 1 пиксел выше, чем в Qt 3.

Для совместимости мы предоставляем класс Q3Painter в Qt3Support, который обеспечивает старую семантику. За подробностями и причинами сделанных изменений обращайтесь к документации Q3Painter.

Перечисление QPainter::CoordinateMode было удалено в Qt 4. Все операции отсечения теперь описываются, используя логические координаты и являются предметом операций преобразования.

Перечисление QPainter::RasterOP было заменено на QPainter::CompositionMode.

QPicture

В Qt 3 QPicture можно было сохранить в формат файла SVG. В Qt 4 поддержка SVG выделена в модуль QtSvg, который предоставляет классы для вывода на экран содержимого файлов SVG. В настоящее время Qt 4 не поддерживает сохранение изображений в этом формате, но этого можно добиться используя класс совместимости Q3Picture.

QPixmap

Функция mask() была изменена так, чтобы возвращать ссылку на QBitmap, а не указатель. В результате, больше нет возможности просто проверить на нулевой указатель при определении имеет ли растровое изображение маску. Взамен, вам нужно явно проверить равна ли битовая маска нулю или нет.

Например, если у вас есть код

     if (pixmap.mask())
         widget->setMask(*pixmap.mask());

вы можете записать его в виде

     if (!pixmap.mask().isNull())
         widget->setMask(pixmap.mask());

Механизмы QPixmap::setOptimization() и QPixmap::setDefaultOptimization() более недоступны в Qt 4.

QPointArray

Класс QPointArray был переименован в QPolygon в Qt 4 и претерпел значительные изменения. В Qt 3 QPointArray наследовался от QMemArray<QPoint>. В Qt 4 QPolygon унаследован от QVector<QPoint>. Все приведенное в разделе в QMemArray<T> также применимо к QPointArray.

Библиотека Qt3Support содержит класс Q3PointArray, который унаследован от QPolygon и предоставляет несколько функций, которые имелись в QPointArray, но больше нет в QPolygon. Эти функции включают Q3PointArray::makeArc(), Q3PointArray::makeEllipse() и Q3PointArray::cubicBezier(). Для представления дуг, эллипсов и кривых Безье в Qt 4 мы рекомендуем вам использовать QPainterPath , а не QPolygon.

В Qt 4 функции QPolygon::setPoints() и QPolygon::putPoints() возвращают void. Соответствующие функции Qt 3 возвращали bool, указывая был ли изменен размер массива удачно или нет. Теперь это можно проверить проверяя QPolygon::size() после вызова.

QPopupMenu

В большинстве случаев QPopupMenu заменен на QMenu в Qt 4. Для совместимости со старыми приложениями, Q3PopupMenu предоставляет старый API и возможности, которые специфичны для выпадающих меню. Обратите внимание на то, что при использовании Q3PopupMenu действия меню должны быть объектами Q3Action.

В Qt 3 общей практикой было добавлять пункты в выпадающие меню используя функцию insertItem(), сохраняющей идентификаторы для последующего использования; например, для динамического изменения элементов меню. В Qt 4 пункты меню полностью представляются действиями для согласованности с другими компонентами пользовательского интерфейса, например, кнопок панели инструментов. Создавайте новые меню с помощью класса QMenu, а для вставки новых пунктов используйте перегруженные функции QMenu::addAction(). Если вам нужно управлять набором действий, созданных для конкретного меню, мы советуем вам создать QActionGroup и добавить их в него.

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

QPrinter

Класс QPrinter теперь ожидает настройку печати из QPrintDialog.

QProcess

Класс QProcess подвергся значительному улучшению в Qt 4. Теперь наследуется от QIODevice, что делает возможным сочетание QProcess с QTextStream или QDataStream.

Старый класс QProcess был переименован в Q3Process и перемещен в библиотеку Qt3Support.

QProgressBar

API класса QProgressBar было существенно улучшено в Qt 4. Старый API QProgressBar доступен как Q3ProgressBar в библиотеке Qt3Support.

QProgressDialog

API класса QProgressDialog был существенно улучшено в Qt 4. Старый API QProgressDialog доступен как Q3ProgressDialog в библиотеке Qt3Support.

Смотрите в Свойствах список свойств QProgressDialog в Qt 3, которые изменились в Qt 4.

QPtrCollection<T>

Абстрактный базовый класс QPtrCollection<T> был переименован в Q3PtrCollection<T> и перемещен в библиотеку Qt3Support. В Qt 4 прямого эквивалента нет.

Список контейнеров Qt 4 смотрите в Базовых контейнерах.

QPtrDict<T>

QPtrDict<T> и QPtrDictIterator<T> были переименованы в Q3PtrDict<T> и Q3PtrDictIterator<T>, соответственно, и перемещены в библиотеку Qt3Support. Они заменены более современными классами QHash<Key, T> и QMultiHash<Key, T>, соответственно, и их соответствующими классами-итераторами.

При портировании на Qt 4 старого кода, который использует Q3PtrDict<T>, имеется четыре класса, которые вы можете использовать:

(Естественно, вы можете использовать другие типы помимо void * для типа ключа, например QWidget *.)

Для портирования Q3PtrDict<T> на Qt 4, читайте раздел в QDict<T>, заменяя в уме void * на QString.

QPtrList<T>

QPtrList<T>, QPtrListIterator<T> и QPtrListStdIterator<T> были перемещены в библиотеку Qt3Support. Их заменили более современные классы QList и QLinkedList и связанные с ними классы-итераторы.

При портировании на Qt 4, вы можете выбрать использование QList<T> или QLinkedList<T> в качестве альтернативы QValueList<T>. QList<T> имеет API, основанный на индексах, и представляет очень быстрый произвольный доступ (QList::operator[]), тогда как QLinkedList<T> имеет API, основанный на итераторах.

В следующей таблице приведены различия API QPtrList<T> и QList<T *>:

Функция QPtrListЭквивалент QList
QPtrList::contains(const T *)QList::count(T *)
QPtrList::containsRef(const T *)QList::count(T *)
QPtrList::find(const T *)Смотрите замечание ниже
QPtrList::findRef(const T *)Смотрите замечание ниже
QPtrList::getFirst()QList::first()
QPtrList::getLast()QList::last()
QPtrList::inSort(const T *)Нет данных
QPtrList::remove(const T *)QList::removeAll(T *)
QPtrList::remove(uint)QList::removeAt(int)
QPtrList::removeNode(QLNode *)Нет данных
QPtrList::removeRef(const T *)QList::removeAll(T *)
QPtrList::sort()Смотрите замечание ниже
QPtrList::takeNode(QLNode *)Нет данных
QPtrList::toVector(QGVector *)Смотрите замечание ниже

Замечания:

  1. QPtrList::toVector(QGVector *) можно заменить на QVector::resize() и qCopy().

    Например, если у вас есть код

         QPtrList<QWidget> list;
         ...
         QPtrVector<QWidget> vector;
         list.toVector(&vector);

    вы можете записать его в виде

         QList<QWidget *> list;
         ...
         QVector<QWidget *> vector;
         vector.resize(list.size());
         qCopy(list.begin(), list.end(), vector.begin());
  2. QPtrList::sort() полагается на виртуальную функцию comparedItems() для сортировки элементов. В Qt 4 вы можете использовать взамен qSort() и передать функции ваш "сравниваемый элемент" в качестве аргумента.
  3. QPtrList::find(const T *) возвращает итератор, тогда как QList::indexOf(T *) возвращает индекс. Чтобы конвертировать индекс в итератор добавьте индекс в QList::begin().
  4. QPtrList::removeFirst() и QPtrList::removeLast() возвращают bool, что указывает были ли элемент удален или нет. Соответствующие функции QList возвращают void. Вы можете добиться такого же результата вызывая QList::isEmpty() перед попыткой удаления элемента.

Если вы используете возможность QPtrList'а - автоудаление (вызывая QPtrList::setAutoDelete(true)), вам нужно сделать немного больше работы. У вас есть два варианта: Вы либо сами вызываете delete всякий раз, когда удаляете элемент из контейнера, либо вы используете QList<T> вместо QList<T *> (т.е. сохраняете значения непосредственно взамен указателей на значения). Здесь мы увидим когда вызвать delete.

В следующей таблице приведены стили, которые вам нужно знать, если вы хотите сами вызывать delete.

Стиль QPtrListСтиль QList
     list.replace(index, value);
     delete list[index];
     list[index] = value;
     list.removeFirst();
     delete list.takeFirst();
     list.removeLast();
     delete list.takeLast();
     list.remove(index);
     delete list.takeAt(index);
     list.remove(value);
     int i = list.indexOf(value);
     if (i != -1)
         delete list.takeAt(i);
     list.remove();

(удаляет текущий элемент)

     QMutableListIterator<T *> i;
     ...
     delete i.value();
     i.remove();
     list.clear();

(также вызывается деструктором QPtrList'а)

     while (!list.isEmpty())
         delete list.takeFirst();

В 99% случаев следующий стиль также работает:

     qDeleteAll(list);
     list.clear();

Тем не менее, это можно привести к аварийному отказу, если на list ссылаются из деструктора типа-значения, потому что list содержит висячие указатели до вызова clear().

Имейте в виду, что деструктор QPtrList'а автоматически вызывает clear(). Если у вас в пользовательском классе имеется член данных QPtrList и вы используете возможность автоудаления, то чтобы избежать утечки памяти вам будет нужно вызывать из деструктора вашего класса delete для всех элементов контейнера.

QPtrList имеет концепцию "текущего элемента", которая может быть использована для обхода списка без использования итератора. При портировании на Qt 4 вы можете использовать взамен класс в стиле Java QListIterator<T *> (или QMutableListIterator<T *>). В следующей таблице приведены различия в API.

Функция QPtrListЭквивалент QListIterator
QPtrList::at()Нет данных
QPtrList::current()QMutableListIterator::value()
QPtrList::currentNode()Нет данных
QPtrList::findNext(const T *)QListIterator::findNext(const T *)
QPtrList::findNextRef(const T *)QListIterator::findNext(const T *)
QPtrList::first()QPtrList::toFront()
QPtrList::last()QPtrList::toBack()
QPtrList::next()QPtrList::next()
QPtrList::prev()QPtrList::previous()
QPtrList::remove()QMutableListIterator::remove()
QPtrList::take()QMutableListIterator::remove()

Имейте в виду, что QListIterator имеет другой способ перебора элементов, чем QPtrList. Типичный цикл с QPtrList выглядит примерно так:

     QPtrList<QWidget> list;
     ...
     while (list.current() != 0) {
         do_something(list.current());
         list.next();
     }

Вот эквивалентный цикл с QListIterator:

     QList<QWidget *> list;
     ...
     QListIterator<QWidget *> i(list);
     while (i.hasNext())
         do_something(i.next());

В заключение, QPtrListIterator<T> также должен быть портирован. Имеется не менее четырех классов-итераторов, которые могут использоваться в качестве замены: QList::const_iterator, QList::iterator, QListIterator и QMutableListIterator. Проще всего использовать при портировании класс QMutableListIterator<T *> (если вы вносите изменения в список посредством итератора) или QListIterator<T *> (если не вносите изменений). В следующей таблице приведены различия в API.

Функция QPtrListIteratorЭквивалент в Qt 4
QPtrListIterator::atFirst()!QListIterator::hasPrevious() (обратите внимание на !)
QPtrListIterator::atLast()!QListIterator::hasNext() (обратите внимание на !)
QPtrListIterator::count()QList::count() или QList::size()
QPtrListIterator::current()QMutableListIterator::value()
QPtrListIterator::isEmpty()QList::isEmpty()
QPtrListIterator::toFirst()QListIterator::toFront()
QPtrListIterator::toLast()QListIterator::toBack()
QPtrListIterator::operator()QMutableListIterator::value()
QPtrListIterator::operator*()QMutableListIterator::value()

Вновь, имейте ввиду, что QListIterator имеет другой способ перебора элементов, чем QPtrList. Типичный цикл с QPtrList выглядит примерно так:

     QPtrList<QWidget> list;
     ...
     QPtrListIterator<QWidget> i;
     while (i.current() != 0) {
         do_something(i.current());
         i.next();
     }

Вот эквивалентный цикл с QListIterator:

     QList<QWidget *> list;
     ...
     QListIterator<QWidget *> i(list);
     while (i.hasNext())
         do_something(i.next());

В заключение, QPtrListStdIterator<T> должен также быть портирован. Это легко сделать, поскольку QList также предоставляет итераторы в стиле STL (QList::iterator и QList::const_iterator).

QPtrQueue<T>

QPtrQueue был перенесен в библиотеку Qt3Support. Его заменил более современный класс QQueue.

В следующей таблице приведены различия между QPtrQueue<T> и QQueue<T *>:

Функция QPtrQueueЭквивалент QQueue
QPtrQueue::autoDelete()Смотрите замечание ниже
QPtrQueue::count()QQueue::count() или QQueue::size() (эквивалентны)
QPtrQueue::current()QQueue::head()
QPtrQueue::remove()QQueue::dequeue()
QPtrQueue::setAutoDelete()Смотрите замечание ниже

Если вы используете возможность QPtrQueue'а автоудаления (вызывая QPtrQueue::setAutoDelete(true)), вам нужно сделать немного больше работы. У вас есть два варианта: Вы либо сами вызываете delete всякий раз, когда удаляете элемент из контейнера, либо вы используете QQueue<T> вместо QQueue<T *> (т.е. сохраняете значения непосредственно взамен указателей на значения). Здесь мы увидим когда вызвать delete.

Стиль QPtrQueueСтиль QQueue
     queue.dequeue();
     delete queue.dequeue();
     queue.remove();
     delete queue.dequeue();
     queue.clear();

(также вызывается деструктором QPtrQueue'а)

     while (!queue.isEmpty())
         delete queue.dequeue();

В 99% случаев следующий стиль также работает:

     qDeleteAll(queue);
     queue.clear();

Тем не менее, это можно привести к аварийному отказу, если на queue ссылаются из деструктора типа-значения, потому что queue содержит висячие указатели до вызова clear().

QPtrStack<T>

QPtrStack был перемещен в библиотеку Qt3Support. Его заменил более современный класс QStack.

В следующей таблице приведены различия между QPtrStack<T> и QStack<T *>:

Функция QPtrStackЭквивалент QStack
QPtrStack::autoDelete()Смотрите замечание ниже
QPtrStack::count()QStack::count() или QStack::size() (эквивалентны)
QPtrStack::current()QStack::top()
QPtrStack::remove()QStack::pop()
QPtrStack::setAutoDelete()Смотрите замечание ниже

Если вы используете возможность QPtrStack'а - автоудаление (вызывая QPtrStack::setAutoDelete(true)), вам нужно сделать немного больше работы. У вас есть два варианта: Вы либо сами вызываете delete всякий раз, когда удаляете элемент из контейнера, либо вы используете QStack<T> вместо QStack<T *> (т.е. сохраняете значения непосредственно взамен указателей на значения). Здесь мы увидим когда вызвать delete.

Стиль QPtrStackСтиль QStack
     stack.pop();
     delete stack.pop();
     stack.remove();
     delete stack.pop();
     stack.clear();

(также вызывается деструктором QPtrStack'а)

     while (!stack.isEmpty())
         delete stack.pop();

В 99% случаев следующий стиль также работает:

     qDeleteAll(stack);
     stack.clear();

Тем не менее, это можно привести к аварийному отказу, если на stack ссылаются из деструктора типа-значения, потому что stack содержит висячие указатели до вызова clear().

QPtrVector<T>

QPtrVector<T> был перемещен в Qt3Support. Его заменил более современный класс QVector.

При портировании на Qt 4 вы можете использовать QVector<T *> в качестве альтернативы для QPtrVector<T>. API QPtrVector<T> и QVector<T *> весьма похожи. Основной проблемой является то, что QPtrVector поддерживает автоудаление, тогда как QVector - нет.

В следующей таблице приведены различия в API между двумя классами:

Функция QPtrVectorЭквивалент QVector
QPtrVector::autoDelete()Смотрите замечание ниже
QPtrVector::bsearch(const T *)qBinaryFind()
QPtrVector::contains(const T *)QVector::count(T *)
QPtrVector::containsRef(const T *)QVector::count(T *)
QPtrVector::count()Смотрите замечание ниже
QPtrVector::insert(uint, T *)Смотрите замечание ниже
QPtrVector::isNull()Нет данных
QPtrVector::remove(uint)Смотрите замечание ниже
QPtrVector::setAutoDelete()Смотрите замечание ниже
QPtrVector::sort()qSort()
QPtrVector::take(uint)Смотрите замечание ниже
QPtrVector::toList(QGList *)QList::QList(const QVector &)

Замечания:

  1. QPtrVector::insert(uint, T *) устанавливает элемент для сохранения значения определенного указателя. Это не то же самое, что и QVector::insert(int, T *), которая создает пространство для элемента передвигая остальные элементы на одну позицию. Используйте vect[i] = ptr для установки элемента QVector равным определенному значению.
  2. QPtrVector::remove(uint) устанавливает элемент равным 0. Это не то же самое, что и QVector::removeAt(int), которая полностью удаляет элемент, уменьшая размер вектора. Используйте vect[i] = 0 для установки элемента QVector равным 0.
  3. Также QPtrVector::take(uint) устанавливает элемент равным 0 и возвращает предыдущее значение элемента. Кроме того, этого легко добиться используя QVector::operator[]().
  4. QPtrVector::count() возвращает количество ненулевых элементов в векторе, тогда как QVector::count() (аналогично QVector::size()) возвращает количество элементов (нулевых или ненулевых) в векторе. К счастью, имитировать QPtrVector::count() не слишком тяжело.

    Например, если у вас есть код

         int numValidItems = vect.count();

    вы можете записать его в виде

         int numValidItems = vect.size() - vect.count(0);

Если вы используете возможность QVector'а - автоудаление (вызывая QVector::setAutoDelete(true)), вам нужно сделать немного больше работы. У вас есть два варианта: Вы либо сами вызываете delete всякий раз, когда удаляете элемент из контейнера, либо вы используете QVector<T> вместо QVector<T *> (т.е. сохраняете значения непосредственно взамен указателей на значения). Здесь мы увидим когда вызвать delete.

В следующей таблице приведены стили, которые вам нужно знать, если вы хотите сами вызывать delete.

Стиль QPtrVectorСтиль QVector
     vect.insert(i, ptr);
     delete vect[i];
     vect[i] = ptr;
     vect.remove(i);
     delete vect[i];
     vect[i] = 0;
     T *ptr = vect.take(i);
     T *ptr = vect[i];
     vect[i] = 0;
     vect.resize(n)
     while (n > vect.size())
         vect.append(0);
     while (n < vect.size() {
         T *ptr = vect.last();
         vect.remove(vect.size() - 1);
         delete ptr;
     }
     vect.clear();

(также вызывается деструктором QPtrVector'а)

     for (int i = 0; i < vect.size(); ++i)
         T *ptr = vect[i];
         vect[i] = 0;
         delete ptr;
     }

В 99% случаев следующий стиль также работает:

     qDeleteAll(vect);
     vect.clear();

Тем не менее, это можно привести к аварийному отказу, если на vect ссылаются из деструктора типа-значения, потому что vect содержит висячие указатели до вызова clear().

Имейте в виду, что деструктор QPtrVector'а автоматически вызывает clear(). Если у вас в пользовательском классе имеется член данных QPtrVector и вы используете возможность автоудаления, то чтобы избежать утечки памяти вам будет нужно вызывать из деструктора вашего класса delete для всех элементов контейнера.

QPushButton

Смотрите в Свойствах список свойств QPushButton в Qt 3, которые изменились в Qt 4.

QRangeControl

В Qt 3 разнообразные виджеты "регулируемого диапазона" (QDial, QScrollBar, QSlider и QSpin) наследовались и от QWidget и от QRangeControl.

В Qt 4 QRangeControl был заменен новыми классами QAbstractSlider и QAbstractSpinBox, которые унаследованы от QWidget и предоставляют аналогичную функциональность. Кроме устранения ненужного множественного наследования, новый дизайн позволяет QAbstractSlider предоставлять сигналы, слоты и свойства.

Старый класс QRangeControl был переименован в Q3RangeControl и перемещен в библиотеку Qt3Support, вместе с (недокументированным) классом QSpinWidget.

Если вы используете QRangeControl в качестве базового класса с своих приложениях, взамен вы можете переключиться на использование QAbstractSlider или QAbstractSpinBox.

Например, если у вас есть код

     class VolumeControl : public QWidget, public QRangeControl
     {
         ...
     protected:
         void valueChange() {
             update();
             emit valueChanged(value());
         }
         void rangeChange() {
             update();
         }
         void stepChange() {
             update();
         }
     };

вы можете записать его в виде

     class VolumeControl : public QAbstractSlider
     {
         ...
     protected:
         void sliderChange(SliderChange change) {
             update();
             if (change == SliderValueChange)
                 emit valueChanged(value());
         }
     };

QRegExp

Функции search() и searchRev() были переименованы в indexIn() и lastIndexIn(), соответственно.

QRegion

В Qt 4 был сделаны следующие изменения в QRegion:

QScrollBar

Смотрите в Свойствах список свойств QScrollBar в Qt 3, которые изменились в Qt 4.

QScrollView

Класс QScrollView был переименован в Q3ScrollView и перемещен в библиотеку Qt3Support. Его заменили классы QAbstractScrollArea и QScrollArea.

Обратите внимание на то, что Qt 4 использует в основном функцию QScrollArea::widget() там, где Qt 3 использовала QScrollView::viewport(). Основной причиной этого является то, что больше невозможно рисовать непосредственно на прокручиваемой области. Функция QScrollArea::widget() возвращает виджет, установленный на прокручиваемую область.

QScrollView был спроектирован для обхода 16-разрядного ограничения на координаты виджета, встречаемого в большинстве оконных систем. В Qt 4 это делается прозрачно для всех виджетов, поэтому больше нет необходимости в подобной функциональности в QScrollView. По этой причине новые классы QAbstractScrollArea и QScrollArea более легкие и сосредоточены на обработке полос прокрутки.

QServerSocket

Класс QServerSocket был переименован в Q3ServerSocket и перемещен в библиотеку Qt3Support. В Qt 4 его заменил класс QTcpServer.

С помощью Q3ServerSocket, соединения принимаются повторно реализованной виртуальной функцией (Q3ServerSocket::newConnection()). С помощью QTcpServer, с другой стороны, вам не нужно создавать подклассы. Взамен просто присоедините к сигналу QTcpServer::newConnection().

QSettings

Класс QSettings был переписан чтобы сделать его более устойчивым к ошибкам и соблюдающим существующие стандарты (например, формат файла INI). API также был сильно переработан. Старый API по-прежнему предоставляется при включенной поддержке Qt 3.

Поскольку между Qt 3 и Qt 4 форма и расположение настроек изменились, версия Qt 4 вашего приложения не распознает настройки, записанные с использованием Qt 3.

QShared

Класс QShared устарел с появлением более мощных QSharedData и QSharedDataPointer как средства создания пользовательских классов с неявным разделением данных. Он был переименован в Q3Shared и перемещен в библиотеку Qt3Support.

Легким способом портирования на Qt 4 является включение этого класса в ваш проект и используйте его вместо QShared:

     struct Shared
     {
         Shared() : count(1) {}
         void ref() { ++count; }
         bool deref() { return !--count; }
         uint count;
     };

Если возможно, мы рекомендуем вам использовать взамен QSharedData и QSharedDataPointer. Они предоставляют потокобезопасный подсчет ссылок и скрытно обрабатывают весь подсчет ссылок, устраняя риски забыть инкрементировать или декрементировать счетчик ссылок.

QSignal

Класс QSignal был переименован в Q3Signal и перемещен в библиотеку Qt3Support. Предпочтительный подход заключается в создании вашего собственного подкласса QObject с сигналом, который имеет желаемую сигнатуру. В качестве альтернативы вы можете вызвать QMetaObject::invokeMethod(), если вы хотите вызвать слот.

QSimpleRichText

Класс QSimpleRichText был переименован в Q3SimpleRichText и перемещен в библиотеку Qt3Support.

Обзор классов форматированного текста Qt 4 смотрите в Обработке форматированного текста.

QSlider

Функции QSlider::sliderStart() и QSlider::sliderRect() были удалены. Вы можете извлечь эту информацию используя QAbstractSlider::sliderPosition() и QStyle::querySubControlMetrics(), соответственно.

В дополнение, направление вертикального QSlider'а изменилось, т.е. минимум теперь внизу, а максимум - вверху. Вы можете использовать свойство QAbstractSlider::invertedAppearance для управления этим поведением.

Смотрите в Свойствах список свойств QSlider в Qt 3, которые изменились в Qt 4.

QSocket

Класс QSocket был переименован в Q3Socket и перемещен в библиотеку Qt3Support. В Qt 4 он был заменен классом QTcpSocket, который унаследовал от QAbstractSocket большую часть его функциональности.

QSocketDevice

Класс QSocketDevice был переименован в Q3SocketDevice и перемещен в библиотеку Qt3Support. В Qt 4 для Q3SocketDevice прямого эквивалента нет:

QSortedList

Класс QSortedList<T> устарел с Qt 3.0. В Qt 4 он был перемещен в библиотеку Qt3Support.

В новом коде мы рекомендуем вам использовать взамен QList<T> и использовать qSort() для сортировки элементов.

QSplitter

Функция setResizeMode() была перенесена в Qt3Support. Установите коэффициент растяжения в политике размеров виджета чтобы получить эквивалентную функциональность.

Устаревшая функция drawSplitter() была удалена. Используйте QStyle::drawPrimitive() чтобы получить аналогичную функциональность.

QSpinBox

Смотрите в Свойствах список свойств QSpinBox в Qt 3, которые изменились в Qt 4.

QSqlCursor

Класс QSqlCursor был переименован в Q3SqlCursor и перемещен в библиотеку Qt3Support. В Qt 4 вы можете использовать QSqlQuery, QSqlQueryModel или QSqlTableModel, в зависимости от того нужен ли вам низкоуровневый или высокоуровневый интерфейс для доступа к базам данных.

Обзор новых классов SQL смотрите в Модуле QtSql.

QSqlDatabase

QSqlDatabase - теперь интеллектуальный (smart) указатель, который передавался по значению. Просто замените все указатели QSqlDatabase на объекты QSqlDatabase.

QSqlEditorFactory

Класс QSqlEditorFactory был переименован в Q3SqlEditorFactory и перемещен в Qt3Support.

Обзор новых классов SQL смотрите в Модуле QtSql.

QSqlError

Перечисление Type было переименовано в ErrorType, Значения были также переименованы:

QSqlFieldInfo

Класс QSqlFieldInfo был перемещен в Qt3Support. Его функциональность теперь предоставляется классом QSqlField.

Обзор новых классов SQL смотрите в Модуле QtSql.

QSqlForm

Класс QSqlForm был переименован в Q3SqlForm и перемещен в библиотеку Qt3Support.

Обзор новых классов SQL смотрите в Модуле QtSql.

QSqlPropertyMap

Класс QSqlPropertyMap был переименован в Q3SqlPropertyMap и перемещен в библиотеку Qt3Support.

Обзор новых классов SQL смотрите в Модуле QtSql.

QSqlQuery

QSqlQuery::prev() была переименована в QSqlQuery::previous(). Имеется вызов функции для совместимости, но если вы создали подкласс QSqlQuery, реализуйте previous() взамен prev().

QSqlRecord

QSqlRecord теперь ведет себя как вектор, QSqlRecord::insert() фактически будет вставлять новое поле вместо замены существующего.

QSqlRecordInfo

Класс QSqlRecordInfo был перемещен в Qt3Support. Его функциональность теперь предоставляется классом QSqlRecord.

Обзор новых классов SQL смотрите в Модуле QtSql.

QSqlSelectCursor

Класс QSqlSelectCursor был переименован в Q3SqlSelectCursor и перемещен в библиотеку Qt3Support.

Обзор новых классов SQL смотрите в Модуле QtSql.

QStoredDrag

Класс QStoredDrag был переименован в Q3StoredDrag и перемещен в библиотеку Qt3Support. В Qt 4 используйте взамен QMimeData и вызовите QMimeData::setData() для установки данных.

Смотрите Портирование на Qt 4 (Перетаскивание) для сравнения API перетаскивания в Qt 3 и Qt 4.

QStr(I)List

Вспомогательные классы QStrList и QStrIList устарели начиная с Qt 2.0. В Qt 4 они были перемещены в библиотеку Qt3Support. Если вы использовали какой-либо из них, мы рекомендуем вам использовать взамен QStringList или QList<QByteArray>.

QStr(I)Vec

Вспомогательные классы QStrVec и QStrIVec устарели начиная с Qt 2.0. В Qt 4 они были перемещены в Qt3Support. Если вы использовали какой-либо из них, мы рекомендуем вам использовать взамен QStringList или QList<QByteArray>.

QString

Вот основные известные проблемы, о которых нужно знать при портировании QString на Qt 4:

  1. Конструктор QString::QString(QChar) выполнял неявное преобразование в Qt 3. Теперь вам нужно приводить для преобразования QChar к QString.
  2. Конструктор QString::QString(const QByteArray &)использовался для остановки на первом встретившемся символе '\0', для совместимости с Qt 1. Эта уловка теперь исправлена; в Qt 4 результирующий QString всегда имеет ту же длину, что и QByteArray, переданный в конструктор.
  3. Статическая константа QString::null устарела в Qt 4. Для совместимости Qt 4 предоставляет символ QString::null, который ведет себя более или менее также как старая константа. Новым стилем стало писать QString() вместо QString::null, или вызывать clear().

    Например, если у вас есть код

             str1 = QString::null;
             if (str2 == QString::null)
                 do_something(QString::null);

    вы можете записать его в виде

             str1.clear();
             if (str2.isNull())
                 do_something(QString());

    В новом коде мы рекомендуем чтобы вы не опирались на отличие между нулевой строкой и (ненулевой) пустой строкой. За подробностями обращайтесь к статье Различие между null и пустой строкой.

  4. QString::latin1() и QString::ascii() были заменены на QString::toLatin1() и QString::toAscii(), которые возвратил QByteArray вместо (нереентерабельной) const char *. В целях совместимости, QString::utf8() и QString::local8Bit(), которые всегда возвращали QByteArray (фактически QCString), были переименованы в QString::toUtf8() и QString::toLocal8Bit().

    Чтобы получить указатель const char * на данные в кодировке ASCII или Latin-1, используйте QString::toAscii() или QString::toLatin1() чтобы получить QByteArray, содержащий данные, которые вызывает QByteArray::constData() для доступа к символьным данным непосредственно. Обратите внимание на то, что указатель, возвращаемый функцией, является допустимым только на время жизни байтового массива; вы должны избегать получения указателя на данные, содержащиеся во временных объектах.

         QString greeting = "Hello";
         const char *badData = greeting.toAscii().constData(); // data is invalid
         QByteArray asciiData = greeting.toAscii();
         const char *goodData = asciiData.constData();

    В вышеприведенном примере, указатель goodData является действенным на время жизни байтового массива asciiData. Если вам нужно сохранить копию данных в структуре данных не из Qt, используйте стандартное выделение памяти C и функции копирования строки чтобы сделать так до разрушения байтового массива.

  5. QString::at() возвращала неконстантную ссылку, тогда как новая QString::at() возвращает константное значение. Код, похожий на такой
         str.at(0) = 'X';

    больше не компилируется. Используйте взамен QString::operator[]:

         str[0] = 'X';
  6. Функция QString::contains(x) (где x - символ или строка) переименована в QString::count(x). Кроме того, теперь существует набор функций QString::contains(), которые возвращают булево значение. Замените старые вызовы contains() на count() или contains(), в зависимости от того, беспокоит ли вас точное количество вхождений символа в строку или беспокоит только наличие или отсутствие в строке символа.
  7. Многие функции в QString имеют параметр bool, который задает чувствительность к регистру. В Qt 4, в интересах удобочитаемости и удобства сопровождения кода, параметры bool были заменены перечислением Qt::CaseSensitivity, которое может принимать значения Qt::CaseSensitive и Qt::CaseInsensitive.

    Например, если у вас есть код

             if (url.startsWith("http:", false))
                 ...

    вы можете записать его в виде

             if (url.startsWith("http:", Qt::CaseInsensitive))
                 ...
  8. Функция QString::setExpand(uint, QChar), которая уже была устаревшей в Qt 3, больше не доступна. Используйте взамен QString::operator[].

    Например, если у вас есть код

             str.setExpand(32, '$');

    вы можете записать его в виде

             str[32] = '$';
  9. Макросы QT_NO_ASCII_CAST и QT_NO_CAST_ASCII были переименованы в QT_NO_CAST_TO_ASCII и QT_NO_CAST_FROM_ASCII, соответственно.
  10. QString::data() используется чтобы возвращать то же, что и QString::ascii(). Она теперь возвращает указатель на данные в Unicode, сохраненные в объекте QString. Вызовите QString::ascii() если вам нужно старое поведение.
  11. QString::arg() теперь конвертирует двузначных маркеры размещения, позволяя использовать до 99 маркеров размещения в любой заданной строке.
  12. Сравнение между QStrings и NULL для того, чтобы определить пусты ли строки, больше не разрешено. Используйте взамен isEmpty().

QStringList

QStringList теперь наследуется от QList<QString> и больше не может быть конвертирован в QValueList<QString>. Так как QValueList унаследован от QList приведение типа будет работать как ожидалось.

Это изменение подразумевает некоторые несовместимости в API для QStringList. Например, at() возвращает строку, а не итератор. За подробностями обращайтесь к разделу в QValueList.

Статическая функция QStringList::split() для разделения строк на списки меньших строк была заменена на QString::split(), которая возвращает QStringList.

QStyle

API класса QStyle усовершенствован и улучшен. Большая часть информации о том, почему были сделаны эти изменения описана в обзоре QStyle.

Так как QStyle используется в основном для внутренних нужд виджетами Qt и стилями, а также поскольку он не является необходимым для хорошего функционирования приложения, способов совместимости нет. Это означает, что мы изменили многие перечисления и функции, а также инструмент портирования qt3to4 не будет вносить большие изменения в коде qstyle. Чтобы облегчить боль, мы перечислим здесь некоторые из наиболее важны изменений.

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

QStyle::StyleFlags были переименованы в QStyle::StateFlags и теперь предваряются префиксом State_ вместо Style_, кроме того флаг Style_ButtonDefault был перемещен в QStyleOptionButton.

Перечисление QStyle::PrimitiveElement было подвергнуто обширным изменениям. Некоторые из перечисления были перемещены в QStyle::ControlElement, некоторые были удалены и все были переименованы. Это переименование не выполняется инструментом портирования qt3to4, поэтому вы должны выполнить его сами. В таблице ниже показано, как теперь выглядят вещи.

Старое имяНовое имяЗамечание
PE_ButtonCommandQStyle::PE_PanelButtonCommand
PE_ButtonDefaultQStyle::PE_FrameDefaultButton
PE_ButtonBevelQStyle::PE_PanelButtonBevel
PE_ButtonToolQStyle::PE_PanelButtonTool
PE_ButtonDropDownQStyle::PE_IndicatorButtonDropDown
PE_FocusRectQStyle::PE_FrameFocusRect
PE_ArrowUpQStyle::PE_IndicatorArrowUp
PE_ArrowDownQStyle::PE_IndicatorArrowDown
PE_ArrowRightQStyle::PE_IndicatorArrowRight
PE_ArrowLeftQStyle::PE_IndicatorArrowLeft
PE_SpinBoxUpQStyle::PE_IndicatorSpinUp
PE_SpinBoxDownQStyle::PE_IndicatorSpinDown
PE_SpinBoxPlusQStyle::PE_IndicatorSpinPlus
PE_SpinBoxMinusQStyle::PE_IndicatorSpinMinus
PE_SpinBoxSliderQStyle::CE_SpinBoxSliderиспользуется QStyle::drawControl()
PE_IndicatorQStyle::PE_IndicatorCheckBox
PE_IndicatorMaskНет данныхиспользуйте QStyle::styleHint() для получения маски
PE_ExclusiveIndicatorQStyle::PE_IndicatorRadioButton
PE_ExclusiveIndicatorMaskНет данныхиспользуйте QStyle::styleHint() для получения маски
PE_DockWindowHandleQStyle::PE_IndicatorToolBarHandle
PE_DockWindowSeparatorQStyle::PE_Q3DockWindowSeparator
PE_DockWindowResizeHandleQStyle::PE_IndicatorDockWindowResizeHandle
PE_DockWindowTitleQStyle::CE_DockWindowTitleиспользуется QStyle::drawControl()
PE_SplitterQStyle::CE_Splitterиспользуется QStyle::drawControl()
PE_PanelQStyle::PE_Frame
PE_PanelMenuQStyle::PE_FrameMenu
PE_PanelMenuBarQStyle::PE_PanelMenuBar
PE_PanelDockWindowQStyle::PE_FrameDockWindow
PE_TabBarBaseQStyle::PE_FrameTabBarBase
PE_HeaderSectionQStyle::CE_HeaderSectionиспользуется QStyle::drawControl()
PE_HeaderArrowQStyle::PE_IndicatorHeaderArrow
PE_StatusBarSectionQStyle::PE_FrameStatusBar
PE_SeparatorQStyle::PE_Q3Separator
PE_SizeGripQStyle::CE_SizeGripиспользуется QStyle::drawControl()
PE_CheckMarkQStyle::PE_IndicatorMenuCheckMark
PE_ScrollBarAddLineQStyle::CE_ScrollBarAddLineиспользуется QStyle::drawControl()
PE_ScrollBarSubLineQStyle::CE_ScrollBarSubLineиспользуется QStyle::drawControl()
PE_ScrollBarAddPageQStyle::CE_ScrollBarAddPageиспользуется QStyle::drawControl()
PE_ScrollBarSubPageQStyle::CE_ScrollBarSubPageиспользуется QStyle::drawControl()
PE_ScrollBarSliderQStyle::CE_ScrollBarSliderиспользуется QStyle::drawControl()
PE_ScrollBarFirstQStyle::CE_ScrollBarFirstиспользуется QStyle::drawControl()
PE_ScrollBarLastQStyle::CE_ScrollBarLastиспользуется QStyle::drawControl()
PE_ProgressBarChunkQStyle::PE_IndicatorProgressChunk
PE_PanelLineEditQStyle::PE_FrameLineEdit
PE_PanelTabWidgetQStyle::PE_FrameTabWidget
PE_WindowFrameQStyle::PE_FrameWindow
PE_CheckListControllerQStyle::PE_Q3CheckListController
PE_CheckListIndicatorQStyle::PE_Q3CheckListIndicator
PE_CheckListExclusiveIndicato\o QStyle::PE_Q3CheckListExclusiveIndicator
PE_PanelGroupBoxQStyle::PE_FrameGroupBox
PE_TreeBranchQStyle::PE_IndicatorBranch
PE_RubberBandQStyle::CE_RubberBandиспользуется QStyle::drawControl()
PE_PanelToolBarQStyle::PE_PanelToolBar
PE_ToolBarHandleQStyle::PE_IndicatorToolBarHandle
PE_ToolBarSeparatorQStyle::PE_IndicatorToolBarSeparator

Функции QStyle::drawControlMask() и QStyle::drawComplexControlMask() были удалены. Их заменили подсказка стиля.

Перегрузки QStyle::drawItem(), которые получали и растровое изображение и строку, были удалены. Используйте непосредственно QStyle::drawItemText() и QStyle::drawItemPixmap().

Перегрузка QStyle::itemRect(), которая получает и растровое изображение и стоку, также удалена, используйте взамен или QStyle::itemTextRect() или QStyle::itemPixmapRect().

QStyleSheet

Классы QStyleSheet и QStyleSheetItem были переименованы в Q3StyleSheet и Q3StyleSheetItem, соответственно, и были перемещены в библиотеку Qt3Support.

Обзор классов форматированного текста Qt 4 смотрите в Обработке форматированного текста, а описание поддержки CSS-подобных таблиц стилей в Qt 4.2 и старше - в Таблицах стилей Qt.

QSyntaxHighlighter

Класс QSyntaxHighlighter из Qt 3 был переименован в Q3SyntaxHighlighter и перемещен в библиотеку Qt3Support. Начиная с Qt 4.1 его заменил новый класс QSyntaxHighlighter, базирующийся на новом механизме форматированного текста Qt 4.

QTabBar

Смотрите в Свойствах список свойств QTabBar в Qt 3, которые изменились в Qt 4.

QTabDialog

Класс QTabDialog больше не является частью открытого Qt API. Он был переименован в Q3TabDialog и перемещен в Qt3Support. В приложениях Qt 4 вы можете легко получить тот же результат сочетая QTabWidget c QDialog и предоставив сами объекты QPushButton.

Смотрите также пример dialogs/tabdialog, который показывает как реализовать диалоги со вкладками в Qt 4.

QTabWidget

Смотрите в Свойствах список свойств QTabWidget в Qt 3, которые изменились в Qt 4.

QTable

Классы QTable, QTableItem, QComboTableItem, QCheckTableItem и QTableSelection были переименованы в Q3Table, Q3TableItem, Q3ComboTableItem, Q3CheckTableItem и Q3TableSelection, соответственно, и перемещены в библиотеку Qt3Support. Новые приложения Qt должны использовать взамен новый класс QTableWidget или QTableView.

Некоторые из этих классов ведут себя по-другому по сравнению с использование обработки указателей NULL. Например, Q3TableItem::setPixmap() больше не принимает NULL или 0 чтобы указать, что элемент должен содержать нулевое растровое изображение; в этом случае нулевое растровое изображение должно быть создано и передано явно в функцию.

Обзор новых классов представления элементов смотрите в Программирование модель/представление.

QTextCodec

Функции loadCharmap() и loadCharmapFromFile() больше не доступны в Qt 4. Вам нужно создать ваш собственный кодек, если вы хотите создать кодек основанный на описании таблицы кодов символов POSIX2.

QTextDrag

Класс QTextDrag был переименован в Q3TextDrag и перемещен в библиотеку Qt3Support. В Qt 4 используйте взамен QMimeData и вызовите QMimeData::setText() для установки данных.

Смотрите Портирование на Qt 4 (Перетаскивание) для сравнения API перетаскивания в Qt 3 и Qt 4.

QTextEdit

Старые классы QTextEdit и QTextBrowser были переименованы в Q3TextEdit и Q3TextBrowser, соответственно, и перемещены в Qt3Support. Новые классы QTextEdit и QTextBrowser имеют немного другой API.

Функция QTextEdit::setWrapPolicy() была переименована в setWordWrapMode(), а функция QTextEdit::setWrapColumnOrWidth() была переименована в setLineWrapColumnOrWidth(). Функции Q3TextEdit::setWrapPolicy() и Q3TextEdit::setWrapColumnOrWidth() предоставляют эту функциональность в классе Q3TextEdit.

Обзор классов форматированного текста Qt 4 смотрите в Обработке форматированного текста.

QTextIStream

Вспомогательный класс QTextIStream больше не предоставляется в Qt 4. Используйте вместо нее непосредственно QTextStream.

QTextOStream

Вспомогательный класс QTextOStream больше не предоставляется в Qt 4. Используйте вместо нее непосредственно QTextStream.

QTextOStreamIterator

Недокументированный класс QTextOStreamIterator был удален из библиотеки Qt. Если он необходим в вашем приложении, просто скопируйте исходный код из заголовочного файла <qtl.h> Qt 3.

QTextStream

В QTextStream некоторому улучшению подвергся API и реализация, а некоторые изменения повлияли на поведение QTextStream'а:

Обратите внимание на то, что в Qt 4 при использовании QTextStream на QFile, вызов QIODevice::reset() на QFile не будет иметь ожидаемого результата, поскольку QTextStream теперь буферизует файл. Используйте взамен функцию QTextStream::seek().

QTextView

Класс QTextView был переименован в Q3TextView и перемещен в библиотеку Qt3Support.

QTimeEdit

Класс QTimeEdit в Qt 4 является вспомогательным классом, базирующимся на QDateTimeEdit. Старый класс был переименован в Q3TimeEdit и перемещен в библиотеку Qt3Support.

Смотрите в Виртуальных функциях список виртуальных функций-членов QTimeEdit в Qt 3, которые больше не являются виртуальными в Qt 4.

QTimer

Windows ограничивает точность таймеров, но начиная с Qt 4, мы эмулируем точное временное разрешение. В Windows XP мы используем API мультимедийного таймера, который дает разрешение в 1 миллисекунду для QTimer.

Обратите внимание на то, что другие версии Windows имеют меньшее временное разрешение, и что код, зависящий от базовой системы ограничения таймера, не сталкивается с такими ограничениями при использовании Qt 4 (например, установка интервала в 0 миллисекунд приведет в Qt к завладению всем процессорным временем когда не нужно обрабатывать никаких событий ГПИ).

QToolBar

Старый класс QToolBar, который работал со старыми классами QMainWindow и QDockArea и унаследован от QDockWindow, был переименован в Q3ToolBar и перемещен в Qt3Support. Обратите внимание на то, что, когда используется Q3ToolBar, действия панели инструментов должны быть объектами Q3Action.

В новых приложениях используйте новый класс QToolBar.

Замечание: Свойство Q3ToolBar'а, horizontallyStretchable, может быть достигнуто в QToolBar с помощью политик размера.

QToolButton

Смотрите в Свойствах список свойств QToolBar в Qt 3, которые изменились в Qt 4.

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

QToolTip

Функции QToolTip::setGloballyEnabled() больше нет. Всплывающие подсказки могут быть отключены установкой фильтра событий на qApp (уникальный объект QApplication) для блокирования событий типа QEvent::ToolTip.

QUriDrag

Класс QUriDrag был переименован в Q3UriDrag и перемещен в библиотеку Qt3Support. В Qt 4 используйте взамен QMimeData и вызовите QMimeData::setUrl() для установки URL.

Смотрите Портирование на Qt 4 (Перетаскивание) для сравнения API перетаскивания в Qt 3 и Qt 4.

QUrl

Класс QUrl был переписан с нуля в Qt 4 чтобы быть более соответствующим стандарту. Старый класс QUrl был переименован в Q3Url и перемещен в библиотеку Qt3Support.

Новый класс QUrl предоставляет исчерпывающий список функций совместимости для облегчения портирования с Q3Url на QUrl. Новые функции требуют изменить ваш код:

QUrlOperator

Класс QUrlOperator больше не является частью открытого Qt API. Он был переименован в Q3UrlOperator и перемещен в Qt3Support.

В приложениях Qt 4 вы можете использовать классы подобно QFtp и QHttp прямо для выполнения действий связанных с файлами на удаленном узле.

QValueList<T>

Класс QValueList<T> был заменен QList<T> и QLinkedList<T> в Qt 4. В качестве помощи при портировании старых приложений Qt, библиотека Qt3Support содержит класс QValueList<T>, реализованный на основе нового класса QLinkedList<T>. Аналогичным образом, он содержит классы QValueListIterator<T> и QValueListConstIterator<T>, реализованные на основе QLinkedList<T>::iterator и QLinkedList<T>::const_iterator.

При портировании на Qt 4, вы можете выбрать использование QList<T> или QLinkedList<T> в качестве альтернативы QValueList<T>. QList<T> имеет API, основанный на индексах, и представляет очень быстрый произвольный доступ (QList::operator[]), тогда как QLinkedList<T> имеет API, основанный на итераторах.

Вот список проблемных функций:

QValueVector<T>

Класс QValueVector<T> был заменен классом QVector<T> в Qt 4. В качестве помощи при портировании старых приложений Qt, библиотека Qt3Support содержит класс Q3ValueVector<T>, реализованный на основе нового класса QVector<T>.

При портировании с QValueVector<T> на QVector<T>, вы можете столкнуться со следующими несовместимостями:

Обзор контейнерных классов Qt 4 смотрите в Базовые контейнеры.

QVariant

Некоторые изменения в остальной части библиотеки Qt имеют последствия для QVariant:

  1. Значение QVariant::ColorGroup перечисления определены только если определен QT3_SUPPORT.
  2. Значение QVariant::IconSet перечисления было переименовано в QVariant::Icon.
  3. Значение QVariant::CString перечисления теперь является синонимом для QVariant::ByteArray.

Также конструктор QVariant(bool, int) был заменен QVariant(bool). Старый код, наподобие QVariant(true, 0), должен быть заменен на QVariant(true); в противном случае, может быть случайно вызвана перегрузка QVariant(int, void *).

QVBox

Класс QVBox теперь доступен в Qt 4 только как Q3VBox. Вы можете добиться такого же результата, что и с QVBox создав QWidget с вертикальной компоновкой:

Например, если у вас есть код

 QVBox *vbox = new QVBox;
 QPushButton *child1 = new QPushButton(vbox);
 QPushButton *child2 = new QPushButton(vbox);

вы можете записать его в виде

 QWidget *vbox = new QWidget;
 QPushButton *child1 = new QPushButton;
 QPushButton *child2 = new QPushButton;

 QVBoxLayout *layout = new QVBoxLayout;
 layout->addWidget(child1);
 layout->addWidget(child2);
 vbox->setLayout(layout);

Обратите внимание на то, что дочерние виджеты автоматически не размещаются в компоновке виджета; вам нужно вручную добавить каждый виджет в QVBoxLayout.

QVGroupBox

Класс QVGroupBox был переименован в Q3VGroupBox и перемещен в библиотеку Qt3Support. Qt 4 не предоставляет конкретного класса замены для QVBoxLayout поскольку QGroupBox спроектирован виджетом обобщенного контейнера. В результате, вам нужно обеспечить вашу собственную компоновку для любых дочерних виджетов.

Для получения дополнительной информации о портировании кода, который использует групповые рамки, смотрите #QGroupBox.

QWhatsThis

Класс QWhatsThis был перепроектирован в Qt 4. Старый класс QWhatsThis доступен как Q3WhatsThis в Qt3Support.

QWidget

Отрисовка фона виджета была значительно улучшена, поддерживая обновления без мерцания и делая возможным получение полупрозрачных виджетов. Это приводит к тому, что следующие функции обработки фона устарели:

Виджет теперь получает события изменения в своем обработчике QWidget::changeEvent(). Это делает следующие измененные виртуальные обработчики устаревшими:

Следующие функции были слотами, но теперь ими не являются:

Следующие функции были неправильно помечены как виртуальные:

Внутренняя функция clearWState() была удалена. Используйте взамен QWidget::setWindowState().

setWFlags() была переименована QWidget::setWindowFlags().

Смотрите в Свойствах список свойств QWidget в Qt 3, которые изменились в Qt 4.

QWidgetFactory

Класс QWidgetFactory был заменен классом QFormBuilder в Qt 4.

QWidgetIntDict

Класс QWidgetIntDict был синонимом для QIntDict<QWidget>. В Qt 4 он больше не доступен. Если вы скомпоновали вместе с Qt3Support, вы можете использовать взамен QIntDict<QWidget>; в противном случае, смотрите раздел в QDict<T>.

QWidgetList

В Qt 3 класс QWidgetList был псевдонимом (typedef) для QPtrList<QWidget>. В Qt 4 он является псевдонимом (typedef) для QList<QWidget *>. Смотрите раздел в QPtrList<T>.

QWidgetPlugin

Класс QWidgetPlugin более не доступен в Qt 4. Чтобы создать пользовательские подключаемые модули виджета, создайте подкласс QDesignerCustomWidgetInterface для предоставления информации о пользовательском виджете, и собрать подключаемый модуль способом, описанным в примере Пользовательский подключаемый модуль виджета.

QWidgetStack

Класс QWidgetStack больше не является частью открытого Qt API. Он был переименован в Q3WidgetStack и перемещен в Qt3Support. В приложениях Qt 4 вы можете использовать вместо него QStackedWidget чтобы получить такие же результаты.

QWizard

Класс QWizard больше не является частью открытого Qt API. Он был переименован в Q3Wizard и перемещен в Qt3Support. В приложениях Qt 4 вы можете получить тот же результат сочетая QStackedWidget c QDialog и самостоятельно предоставив объекты QPushButton.

Имеется также решение QtWizard, доступное в Trolltech. Новый класс был спроектирован для работы и линейных мастеров и для мастеров с более сложными структурами, которая позволяет пользователям получать разные страницы в зависимости от выбранных ими опций. Основываясь на полученных нами откликах, будет обдумано включение QtWizard в будущие выпуски Qt.

QWorkspace

Класс QWorkspace в Qt 4 требует явного добавления окон MDI с помощью QWorkspace::addWindow().

Виртуальные функции

Виртуальные функции, у которых в Qt 4 изменилась сигнатура:

Сигнатуры функции в Qt 3Сигнатуры функции в Qt 4
int QAccessibleInterface::navigate(NavDirection, int) constint QAccessibleInterface::navigate(RelationFlag, int, QAccessibleInterface **) const
bool QApplication::winEventFilter(MSG *)bool QApplication::winEventFilter(MSG *, long *)
Function: Offset QIODevice::at() constFunction: Q_LONGLONG QIODevice::pos() const
bool QIODevice::at(Offset)bool QIODevice::seek(Q_LONGLONG)
bool QIODevice::open(int)bool QIODevice::open(OpenMode)
Q_LONG QIODevice::readBlock(char *, Q_ULONG)Q_LONGLONG QIODevice::readData(char *, Q_LONGLONG)
Q_LONG QIODevice::writeBlock(const char *, Q_ULONG)Q_LONGLONG QIODevice::writeData(const char *, Q_LONGLONG)
const char * QImageFormatType::formatName() constQByteArray QImageFormatType::formatName() const
QPopupMenu * QLineEdit::createPopupMenu()QMenu * QLineEdit::createPopupMenu()
bool QMacMime::canConvert(const char *, int)bool QMacMime::canConvert(const QString &, int)
QValueList<QByteArray> QMacMime::convertFromMime(QByteArray, const char *, int)QList<QByteArray> QMacMime::convertFromMime(QByteArray, const QString &, int)
QByteArray QMacMime::convertToMime(QValueList<QByteArray> data, const char *, int)QByteArray QMacMime::convertToMime(QList<QByteArray> data, const QString &, int)
const char * QMacMime::convertorName()QString QMacMime::convertorName()
int QMacMime::flavorFor(const char *)int QMacMime::flavorFor(const QString &)
const char * QMacMime::mimeFor(int)QString QMacMime::mimeFor(int)
QMetaObject * QObject::metaObject() constconst QMetaObject * QObject::metaObject() const
bool QScreen::onCard(unsigned char *) constbool QScreen::onCard(const unsigned char *) const
bool QScreen::onCard(unsigned char *, ulong &) constbool QScreen::onCard(const unsigned char *, ulong &) const
int QSpinBox::mapTextToValue(bool *)int QSpinBox::mapTextToValue(QString *, QValidator::State *) const
QString QSpinBox::mapValueToText(int)QString QSpinBox::mapValueToText(int) const
bool QSqlDriver::open(const QString &, const QString &, const QString &, const QString &, int)bool QSqlDriver::open(const QString &, const QString &, const QString &, const QString &, int, const QString &)
QStringList QSqlDriver::tables(const QString &) constQStringList QSqlDriver::tables(QSql::TableType) const
bool QSqlQuery::prev()bool QSqlQuery::previous()
QVariant QSqlResult::data(int)QVariant QSqlResult::data(int)
bool QSqlResult::fetchPrev()bool QSqlResult::fetchPrevious()
void QStyle::drawComplexControl(ComplexControl, QPainter *, const QWidget *, const QRect &, const QColorGroup &, SFlags, SCFlags, SCFlags, const QStyleOption &) constvoid QStyle::drawComplexControl(ComplexControl, const QStyleOptionComplex *, QPainter *, const QWidget *) const
void QStyle::drawComplexControlMask(ComplexControl, QPainter *, const QWidget *, const QRect &, const QStyleOption &) constvoid QStyle::drawComplexControlMask(ComplexControl, const QStyleOptionComplex *, QPainter *, const QWidget *) const
void QStyle::drawControl(ControlElement, QPainter *, const QWidget *, const QRect &, const QColorGroup &, SFlags, const QStyleOption &) constvoid QStyle::drawControl(ControlElement, const QStyleOption *, QPainter *, const QWidget *) const
void QStyle::drawControlMask(ControlElement, QPainter *, const QWidget *, const QRect &, const QStyleOption &) constvoid QStyle::drawControlMask(ControlElement, const QStyleOption *, QPainter *, const QWidget *) const
void QStyle::drawItem(QPainter *, const QRect &, int, const QColorGroup &, bool, const QPixmap *, const QString &, int, const QColor *) constvoid QStyle::drawItem(QPainter *, const QRect &, int, const QPalette &, bool, const QString &, int, const QColor *) const
void QStyle::drawPrimitive(PrimitiveElement, QPainter *, const QRect &, const QColorGroup &, SFlags, const QStyleOption &) constvoid QStyle::drawPrimitive(PrimitiveElement, const QStyleOption *, QPainter *, const QWidget *) const
QRect QStyle::itemRect(QPainter *, const QRect &, int, bool, const QPixmap *, const QString &, int) constQRect QStyle::itemRect(const QFontMetrics &, const QRect &, int, bool, const QString &, int) const
int QStyle::pixelMetric(PixelMetric, const QWidget *) constint QStyle::pixelMetric(PixelMetric, const QStyleOption *, const QWidget *) const
SubControl QStyle::querySubControl(ComplexControl, const QWidget *, const QPoint &, const QStyleOption &) constSubControl QStyle::hitTestComplexControl(ComplexControl, const QStyleOptionComplex *, const QPoint &, const QWidget *) const
QRect QStyle::querySubControlMetrics(ComplexControl, const QWidget *, SubControl, const QStyleOption &) constQRect QStyle::subControlRect(ComplexControl, const QStyleOptionComplex *, SubControl, const QWidget *) const
QSize QStyle::sizeFromContents(ContentsType, const QWidget *, const QSize &, const QStyleOption &) constQSize QStyle::sizeFromContents(ContentsType, const QStyleOption *, const QSize &, const QFontMetrics &, const QWidget *) const
int QStyle::styleHint(StyleHint, const QWidget *, const QStyleOption &, QStyleHintReturn *) constint QStyle::styleHint(StyleHint, const QStyleOption *, const QWidget *, QStyleHintReturn *) const
QPixmap QStyle::stylePixmap(StylePixmap, const QWidget *, const QStyleOption &) constQPixmap QStyle::standardPixmap(StandardPixmap, const QStyleOption *, const QWidget *) const
QRect QStyle::subRect(SubRect, const QWidget *) constQRect QStyle::subRect(SubRect, const QStyleOption *, const QFontMetrics &, const QWidget *) const
void QStyle::unPolish(QApplication *)void QStyle::unpolish(QApplication *)
void QStyle::unPolish(QWidget *)void QStyle::unpolish(QWidget *)
QCString QTextCodec::fromUnicode(const QString &, int &) constQByteArray QTextCodec::fromUnicode(const QString &, int &) const
QValueList<int> QTextCodecPlugin::mibEnums() constQList<int> QTextCodecPlugin::mibEnums() const
void QTextDrag::setSubtype(const QCString &)void QTextDrag::setSubtype(const QString &)
QCString QTextEncoder::fromUnicode(const QString &, int &)QByteArray QTextEncoder::fromUnicode(const QString &, int &)
void QUriDrag::setUris(QStrList)void QUriDrag::setUris(const QList<QByteArray> & list)
void QUrlInfo::setSize(uint)void QUrlInfo::setSize(Q_LONGLONG)
bool QWindowsMime::canConvert(const char *, int)bool QWindowsMime::canConvert(const QString &, int)
int QWindowsMime::cfFor(const char *)int QWindowsMime::cfFor(const QString &)
QByteArray QWindowsMime::convertFromMime(QByteArray, const char *, int)QByteArray QWindowsMime::convertFromMime(const QByteArray &, const QString &, int)
QByteArray QWindowsMime::convertToMime(QByteArray, const char *, int)QByteArray QWindowsMime::convertToMime(const QByteArray &, const QString &, int)
const char * QWindowsMime::convertorName()QString QWindowsMime::convertorName()
void QWSMouseHandler::calibrate(QWSPointerCalibrationData *)void QWSMouseHandler::calibrate(const QWSPointerCalibrationData *)
bool QWidget::macEvent(MSG *)bool QWidget::macEvent(EventHandlerCallRef, EventRef)
bool QWidget::winEvent(MSG *)bool QWidget::winEvent(MSG *, long *)
QString QXmlContentHandler::errorString()QString QXmlContentHandler::errorString() const
QString QXmlDTDHandler::errorString()QString QXmlDTDHandler::errorString() const
QString QXmlDeclHandler::errorString()QString QXmlDeclHandler::errorString() const
QString QXmlEntityResolver::errorString()QString QXmlEntityResolver::errorString() const
QString QXmlErrorHandler::errorString()QString QXmlErrorHandler::errorString() const
QString QXmlInputSource::data()QString QXmlInputSource::data() const
QString QXmlLexicalHandler::errorString()QString QXmlLexicalHandler::errorString() const
int QXmlLocator::columnNumber()int QXmlLocator::columnNumber() const
int QXmlLocator::lineNumber()int QXmlLocator::lineNumber() const

Виртуальные функции, которые не являются виртуальными в Qt 4:

Функция в Qt 3Комментарий
void QAccessibleInterface::clearSelection()Портирована на новый API QAccessibleInterface.
int QAccessibleInterface::controlAt(int, int) constПортирована на новый API QAccessibleInterface.
bool QAccessibleInterface::doDefaultAction(int)Портирована на новый API QAccessibleInterface.
QMemArray<int> QAccessibleInterface::selection() constПортирована на новый API QAccessibleInterface.
bool QAccessibleInterface::setFocus(int)Портирована на новый API QAccessibleInterface.
bool QAccessibleInterface::setSelected(int, bool, bool)Портирована на новый API QAccessibleInterface.
bool QAction::addTo(QWidget *)Используйте взамен Q3Action или портируйте на новый QAction API.
void QAction::addedTo(QWidget *, QWidget *)Используйте взамен Q3Action или портируйте на новый QAction API.
void QAction::addedTo(int, QPopupMenu *)Используйте взамен Q3Action или портируйте на новый QAction API.
bool QAction::removeFrom(QWidget *)Используйте взамен Q3Action или портируйте на новый QAction API.
void QAction::setAccel(const QKeySequence &)Используйте взамен Q3Action или портируйте на новый QAction API.
void QAction::setEnabled(bool)Используйте взамен Q3Action или портируйте на новый QAction API.
void QAction::setIconSet(const QIcon &)Используйте взамен Q3Action или портируйте на новый QAction API.
void QAction::setMenuText(const QString &)Используйте взамен Q3Action или портируйте на новый QAction API.
void QAction::setOn(bool)Используйте взамен Q3Action или портируйте на новый QAction API.
void QAction::setStatusTip(const QString &)Используйте взамен Q3Action или портируйте на новый QAction API.
void QAction::setText(const QString &)Используйте взамен Q3Action или портируйте на новый QAction API.
void QAction::setToggleAction(bool)Используйте взамен Q3Action или портируйте на новый QAction API.
void QAction::setToolTip(const QString &)Используйте взамен Q3Action или портируйте на новый QAction API.
void QAction::setWhatsThis(const QString &)Используйте взамен Q3Action или портируйте на новый QAction API.
void QButton::drawButton(QPainter *)Используйте взамен Q3Button или повторно реализуйте QButton::paintEvent().
void QButton::drawButtonLabel(QPainter *)Используйте взамен Q3Button или повторно реализуйте QButton::paintEvent().
void QButton::setAccel(const QKeySequence &)Сеттер.
void QButton::setAutoRepeat(bool)Сеттер.
void QButton::setDown(bool)Сеттер.
void QButton::setPixmap(const QPixmap &)Сеттер.
void QButton::setState(ToggleState)Сеттер.
void QButton::setText(const QString &)Используйте функцию-сеттер QAbstractButton::setText() setter function.
void QButton::setToggleType(ToggleType)Сеттер.
void QButtonGroup::moveFocus(int)Используйте функцию-сеттер QWidget::setFocus().
void QButtonGroup::setButton(int)Сеттер.
void QButtonGroup::setExclusive(bool)Сеттер.
void QButtonGroup::setRadioButtonExclusive(bool)Сеттер.
void QComboBox::setAutoCompletion(bool)Сеттер.
void QComboBox::setAutoResize(bool)Сеттер.
void QComboBox::setCurrentItem(int)Сеттер.
void QComboBox::setCurrentText(const QString &)Сеттер.
void QComboBox::setFont(const QFont &)Сеттер.
void QComboBox::setInsertionPolicy(Policy)Сеттер.
void QComboBox::setLineEdit(QLineEdit *)Сеттер.
void QComboBox::setListBox(QListBox *)Сеттер.
void QComboBox::setMaxCount(int)Сеттер.
void QComboBox::setPalette(const QPalette &)Сеттер.
void QComboBox::setSizeLimit(int)Сеттер.
void QComboBox::setValidator(const QValidator *)Сеттер.
void QDateEdit::fix()Портируйте на новый QDateTimeEdit.
QString QDateEdit::sectionFormattedText(int)Портируйте на новый QDateTimeEdit.
void QDateEdit::setAutoAdvance(bool)Портируйте на новый QDateTimeEdit.
void QDateEdit::setDate(const QDate &)Портируйте на новый QDateTimeEdit.
void QDateEdit::setDay(int)Портируйте на новый QDateTimeEdit.
void QDateEdit::setMaxValue(const QDate &)Портируйте на новый QDateTimeEdit.
void QDateEdit::setMinValue(const QDate &)Портируйте на новый QDateTimeEdit.
void QDateEdit::setMonth(int)Портируйте на новый QDateTimeEdit.
void QDateEdit::setOrder(Order)Портируйте на новый QDateTimeEdit.
void QDateEdit::setRange(const QDate &, const QDate &)Портируйте на новый QDateTimeEdit.
void QDateEdit::setSeparator(const QString &)Портируйте на новый QDateTimeEdit.
void QDateEdit::setYear(int)Портируйте на новый QDateTimeEdit.
void QDateTimeEdit::setAutoAdvance(bool)Портируйте на новый QDateTimeEdit.
void QDateTimeEdit::setDateTime(const QDateTime &)Портируйте на новый QDateTimeEdit.
void QDial::rangeChange()Повторно реализуйте QDial::sliderChange() взамен.
void QDial::repaintScreen(const QRect *)Реализуйте повторно QDial::paintEvent() взамен.
void QDial::setNotchTarget(double)Сеттер.
void QDial::setNotchesVisible(bool)Сеттер.
void QDial::setTracking(bool)Сеттер.
void QDial::setValue(int)Используйте взамен QDial::sliderChange().
void QDial::setWrapping(bool)Сеттер.
void QDial::valueChange()Используйте взамен QDial::sliderChange().
QString QDir::absFilePath(const QString &, bool) constТип-значение.
QString QDir::absPath() constТип-значение.
QString QDir::canonicalPath() constТип-значение.
bool QDir::cd(const QString &, bool)Тип-значение.
bool QDir::cdUp()Тип-значение.
void QDir::convertToAbs()Тип-значение.
QString QDir::dirName() constТип-значение.
QStrList QDir::encodedEntryList(int, int) constТип-значение.
QStrList QDir::encodedEntryList(const QString &, int, int) constТип-значение.
const QFileInfoList * QDir::entryInfoList(int, int) constТип-значение.
const QFileInfoList * QDir::entryInfoList(const QString &, int, int) constТип-значение.
QStringList QDir::entryList(const QString &, int, int) constТип-значение.
QStringList QDir::entryList(int, int) constТип-значение.
bool QDir::exists() constТип-значение.
bool QDir::exists(const QString &, bool)Тип-значение.
QString QDir::filePath(const QString &, bool) constТип-значение.
bool QDir::isReadable() constТип-значение.
bool QDir::isRelative() constТип-значение.
bool QDir::isRoot() constТип-значение.
bool QDir::mkdir(const QString &, bool) constТип-значение.
bool QDir::operator!=() constТип-значение.
bool QDir::operator==() constТип-значение.
QString QDir::path() constТип-значение.
bool QDir::remove(const QString &, bool)Тип-значение.
bool QDir::rename(const QString &, const QString &, bool)Тип-значение.
bool QDir::rmdir(const QString &, bool) constТип-значение.
void QDir::setFilter(int)Тип-значение.
void QDir::setMatchAllDirs(bool)Тип-значение.
void QDir::setNameFilter(const QString &)Тип-значение.
void QDir::setPath(const QString &)Тип-значение.
void QDir::setSorting(int)Тип-значение.
void QDns::setLabel(const QString &)Используйте взамен Q3Dns.
void QDns::setLabel(const QHostAddress &)Используйте взамен Q3Dns.
void QDns::setRecordType(RecordType)Используйте взамен Q3Dns.
void QDockWindow::dock()Используйте взамен Q3DockWindow или портируйте на новый QDockWidget API.
void QDockWindow::setCloseMode(int)Используйте взамен Q3DockWindow или портируйте на новый QDockWidget API.
void QDockWindow::setFixedExtentHeight(int)Используйте взамен Q3DockWindow или портируйте на новый QDockWidget API.
void QDockWindow::setFixedExtentWidth(int)Используйте взамен Q3DockWindow или портируйте на новый QDockWidget API.
void QDockWindow::setHorizontallyStretchable(bool)Используйте взамен Q3DockWindow или портируйте на новый QDockWidget API.
void QDockWindow::setMovingEnabled(bool)Используйте взамен Q3DockWindow или портируйте на новый QDockWidget API.
void QDockWindow::setNewLine(bool)Используйте взамен Q3DockWindow или портируйте на новый QDockWidget API.
void QDockWindow::setOffset(int)Используйте взамен Q3DockWindow или портируйте на новый QDockWidget API.
void QDockWindow::setOpaqueMoving(bool)Используйте взамен Q3DockWindow или портируйте на новый QDockWidget API.
void QDockWindow::setOrientation(Orientation)Используйте взамен Q3DockWindow или портируйте на новый QDockWidget API.
void QDockWindow::setResizeEnabled(bool)Используйте взамен Q3DockWindow или портируйте на новый QDockWidget API.
void QDockWindow::setVerticallyStretchable(bool)Используйте взамен Q3DockWindow или портируйте на новый QDockWidget API.
void QDockWindow::setWidget(QWidget *)Используйте взамен Q3DockWindow или портируйте на новый QDockWidget API.
void QDockWindow::undock()Используйте взамен Q3DockWindow или портируйте на новый QDockWidget API.
QString QDomAttr::name() constТип-значение.
QDomElement QDomAttr::ownerElement() constТип-значение.
void QDomAttr::setValue(const QString &)Тип-значение.
bool QDomAttr::specified() constТип-значение.
QString QDomAttr::value() constТип-значение.
void QDomCharacterData::appendData(const QString &)Тип-значение.
QString QDomCharacterData::data() constТип-значение.
void QDomCharacterData::deleteData(unsigned, unsigned)Тип-значение.
void QDomCharacterData::insertData(unsigned, const QString &)Тип-значение.
uint QDomCharacterData::length() constТип-значение.
void QDomCharacterData::replaceData(unsigned, unsigned, const QString &)Тип-значение.
void QDomCharacterData::setData(const QString &)Тип-значение.
QString QDomCharacterData::substringData(unsigned, unsigned)Тип-значение.
QDomNamedNodeMap QDomDocumentType::entities() constТип-значение.
QString QDomDocumentType::internalSubset() constТип-значение.
QString QDomDocumentType::name() constТип-значение.
QDomNamedNodeMap QDomDocumentType::notations() constТип-значение.
QString QDomDocumentType::publicId() constТип-значение.
QString QDomDocumentType::systemId() constТип-значение.
QDomNamedNodeMap QDomElement::attributes() constТип-значение.
QDomNodeList QDomElement::elementsByTagName(const QString &) constТип-значение.
QDomNodeList QDomElement::elementsByTagNameNS(const QString &, const QString &) constТип-значение.
QString QDomEntity::notationName() constТип-значение.
QString QDomEntity::publicId() constТип-значение.
QString QDomEntity::systemId() constТип-значение.
QDomDocument QDomImplementation::createDocument(const QString &, const QString &, const QDomDocumentType &)Тип-значение.
QDomDocumentType QDomImplementation::createDocumentType(const QString &, const QString &, const QString &)Тип-значение.
bool QDomImplementation::hasFeature(const QString &, const QString &)Тип-значение.
QDomImplementation::~QDomImplementation()Тип-значение.
QDomNode QDomNode::appendChild(const QDomNode &)Тип-значение.
QDomNamedNodeMap QDomNode::attributes() constТип-значение.
QDomNodeList QDomNode::childNodes() constТип-значение.
QDomNode QDomNode::cloneNode(bool) constТип-значение.
QDomNode QDomNode::firstChild() constТип-значение.
bool QDomNode::hasAttributes() constТип-значение.
bool QDomNode::hasChildNodes() constТип-значение.
QDomNode QDomNode::insertAfter(const QDomNode &, const QDomNode &)Тип-значение.
QDomNode QDomNode::insertBefore(const QDomNode &, const QDomNode &)Тип-значение.
bool QDomNode::isAttr() constТип-значение.
bool QDomNode::isCDATASection() constТип-значение.
bool QDomNode::isCharacterData() constТип-значение.
bool QDomNode::isComment() constТип-значение.
bool QDomNode::isDocument() constТип-значение.
bool QDomNode::isDocumentFragment() constТип-значение.
bool QDomNode::isDocumentType() constТип-значение.
bool QDomNode::isElement() constТип-значение.
bool QDomNode::isEntity() constТип-значение.
bool QDomNode::isEntityReference() constТип-значение.
bool QDomNode::isNotation() constТип-значение.
bool QDomNode::isProcessingInstruction() constТип-значение.
bool QDomNode::isSupported(const QString &, const QString &) constТип-значение.
bool QDomNode::isText() constТип-значение.
QDomNode QDomNode::lastChild() constТип-значение.
QString QDomNode::localName() constТип-значение.
QString QDomNode::namespaceURI() constТип-значение.
QDomNode QDomNode::nextSibling() constТип-значение.
QString QDomNode::nodeName() constТип-значение.
QDomNode::NodeType QDomNode::nodeType() constТип-значение.
QString QDomNode::nodeValue() constТип-значение.
void QDomNode::normalize()Тип-значение.
QDomDocument QDomNode::ownerDocument() constТип-значение.
QDomNode QDomNode::parentNode() constТип-значение.
QString QDomNode::prefix() constТип-значение.
QDomNode QDomNode::previousSibling() constТип-значение.
QDomNode QDomNode::removeChild(const QDomNode &)Тип-значение.
QDomNode QDomNode::replaceChild(const QDomNode &, const QDomNode &)Тип-значение.
void QDomNode::setNodeValue(const QString &)Тип-значение.
void QDomNode::setPrefix(const QString &)Тип-значение.
QDomNode::~QDomNode()Тип-значение.
QDomNode QDomNodeList::item(int) constТип-значение.
uint QDomNodeList::length() constТип-значение.
QDomNodeList::~QDomNodeList()Тип-значение.
QString QDomProcessingInstruction::data() constТип-значение.
void QDomProcessingInstruction::setData(const QString &)Тип-значение.
QString QDomProcessingInstruction::target() constТип-значение.
int QEventLoop::enterLoop()Портируйте на новый QAbstractEventDispatcher API.
int QEventLoop::exec()Портируйте на новый QAbstractEventDispatcher API.
void QEventLoop::exit(int)Портируйте на новый QAbstractEventDispatcher API.
void QEventLoop::exitLoop()Портируйте на новый QAbstractEventDispatcher API.
bool QEventLoop::hasPendingEvents() constПортируйте на новый QAbstractEventDispatcher API.
int QEventLoop::loopLevel() constПортируйте на новый QAbstractEventDispatcher API.
bool QEventLoop::processEvents(ProcessEventsFlags)Портируйте на новый QAbstractEventDispatcher API.
void QEventLoop::registerSocketNotifier(QSocketNotifier *)Портируйте на новый QAbstractEventDispatcher API.
void QEventLoop::unregisterSocketNotifier(QSocketNotifier *)Портируйте на новый QAbstractEventDispatcher API.
void QEventLoop::wakeUp()Портируйте на новый QAbstractEventDispatcher API.
void QFrame::drawContents(QPainter *)Используйте взамен Q3Frame или реализуйте повторно QFrame::paintEvent().
void QFrame::drawFrame(QPainter *)Используйте взамен Q3Frame или реализуйте повторно QFrame::paintEvent().
void QFrame::frameChanged()Используйте взамен Q3Frame или реализуйте повторно QFrame::resizeEvent().
void QFrame::setFrameRect(const QRect &)Сеттер.
void QFrame::setFrameStyle(int)Сеттер.
void QFrame::setLineWidth(int)Сеттер.
void QFrame::setMargin(int)Сеттер.
void QFrame::setMidLineWidth(int)Сеттер.
void QGridLayout::setColStretch(int, int)Сеттер.
void QGridLayout::setRowStretch(int, int)Сеттер.
void QGroupBox::setAlignment(int)Сеттер.
void QGroupBox::setColumnLayout(int, Orientation)Сеттер.
void QGroupBox::setTitle(const QString &)Сеттер.
QHostAddress::~QHostAddress()Тип-значение.
int QIODevice::getch()Портируйте на новый QIODevice API.
int QIODevice::putch(int)Портируйте на новый QIODevice API.
QByteArray QIODevice::readAll()Портируйте на новый QIODevice API.
Q_LONG QIODevice::readLine(char *, Q_ULONG)Портируйте на новый QIODevice API.
int QIODevice::ungetch(int)Портируйте на новый QIODevice API.
void QIcon::setPixmap(const QString &, Size, Mode, State)Тип-значение.
void QIcon::setPixmap(const QPixmap &, Size, Mode, State)Тип-значение.
QIcon::~QIcon()Тип-значение.
void QLabel::setAlignment(int)Сеттер.
void QLabel::setAutoResize(bool)Сеттер.
void QLabel::setBuddy(QWidget *)Сеттер.
void QLabel::setMovie(const QMovie &)Сеттер.
void QLabel::setNum(int)Сеттер.
void QLabel::setNum(double)Сеттер.
void QLabel::setPicture(const QPicture &)Сеттер.
void QLabel::setPixmap(const QPixmap &)Сеттер.
void QLabel::setText(const QString &)Сеттер.
QLayoutIterator QLayout::iterator()Портируйте на новый QLayout API.
void QLayout::setAutoAdd(bool)Сеттер.
void QLayout::setMargin(int)Сеттер.
void QLayout::setMenuBar(QMenuBar *)Сеттер.
void QLayout::setSpacing(int)Сеттер.
QLayoutIterator QLayoutItem::iterator()Портируйте на новый QLayoutItem API.
void QLayoutItem::setAlignment(int)Сеттер.
bool QLibrary::unload()Никогда не использовалась полиморфно в Qt.
void QLineEdit::clear()Соединяет взамен с QLineEdit::textChanged().
void QLineEdit::clearValidator()Никогда не использовалась полиморфно в Qt.
void QLineEdit::copy() constНикогда не использовалась полиморфно в Qt.
void QLineEdit::cut()Никогда не использовалась полиморфно в Qt.
void QLineEdit::deselect()Соединяет взамен с QLineEdit::selectionChanged().
void QLineEdit::insert(const QString &)Соединяет взамен с QLineEdit::textChanged().
void QLineEdit::paste()Соединяет взамен с QLineEdit::textChanged().
void QLineEdit::redo()Никогда не использовалась полиморфно в Qt.
void QLineEdit::selectAll()Соединяет взамен с QLineEdit::selectionChanged().
void QLineEdit::setAlignment(int)Сеттер.
void QLineEdit::setCursorPosition(int)Соединяет взамен с QLineEdit::cursorPositionChanged().
void QLineEdit::setDragEnabled(bool)Сеттер.
void QLineEdit::setEchoMode(EchoMode)Сеттер.
void QLineEdit::setFrame(bool)Сеттер.
void QLineEdit::setMaxLength(int)Сеттер.
void QLineEdit::setReadOnly(bool)Сеттер.
void QLineEdit::setSelection(int, int)Соединяет взамен с QLineEdit::selectionChanged().
void QLineEdit::setText(const QString &)Соединяет взамен с QLineEdit::textChanged().
void QLineEdit::setValidator(const QValidator *)Сеттер.
void QLineEdit::undo()Никогда не использовалась Qt в полиморфном варианте.
void QMainWindow::addDockWindow(QDockWindow *, Dock, bool)Портируйте на новый QMainWindow API.
void QMainWindow::addDockWindow(QDockWindow *, const QString &, Dock, bool)Портируйте на новый QMainWindow API.
void QMainWindow::customize()Портируйте на новый QMainWindow API.
bool QMainWindow::isCustomizable() constПортируйте на новый QMainWindow API.
void QMainWindow::moveDockWindow(QDockWindow *, Dock)Портируйте на новый QMainWindow API.
void QMainWindow::moveDockWindow(QDockWindow *, Dock, bool, int, int)Портируйте на новый QMainWindow API.
void QMainWindow::removeDockWindow(QDockWindow *)Портируйте на новый QMainWindow API.
void QMainWindow::setAppropriate(QDockWindow *, bool)Портируйте на новый QMainWindow API.
void QMainWindow::setCentralWidget(QWidget *)Сеттер.
void QMainWindow::setDockEnabled(QDockWindow *, Dock, bool)Портируйте на новый QMainWindow API.
void QMainWindow::setDockEnabled(Dock, bool)Портируйте на новый QMainWindow API.
void QMainWindow::setDockMenuEnabled(bool)Портируйте на новый QMainWindow API.
void QMainWindow::setDockWindowsMovable(bool)Портируйте на новый QMainWindow API.
void QMainWindow::setOpaqueMoving(bool)Портируйте на новый QMainWindow API.
void QMainWindow::setRightJustification(bool)Портируйте на новый QMainWindow API.
void QMainWindow::setUpLayout()Портируйте на новый QMainWindow API.
void QMainWindow::setUsesBigPixmaps(bool)Портируйте на новый QMainWindow API.
void QMainWindow::setUsesTextLabel(bool)Портируйте на новый QMainWindow API.
bool QMainWindow::showDockMenu(const QPoint &)Портируйте на новый QMainWindow API.
void QMenuBar::activateItemAt(int)Портируйте на новый QMenuBar API.
void QMenuBar::menuContentsChanged()Портируйте на новый QMenuBar API.
void QMenuBar::menuDelPopup(QPopupMenu *)Портируйте на новый QMenuBar API.
void QMenuBar::menuInsPopup(QPopupMenu *)Портируйте на новый QMenuBar API.
void QMenuBar::menuStateChanged()Портируйте на новый QMenuBar API.
void QMenuBar::setId(int, int)Портируйте на новый QMenuBar API.
void QMenuBar::setSeparator(Separator)Портируйте на новый QMenuBar API.
void QMenuBar::updateItem(int)Портируйте на новый QMenuBar API.
QMutex::~QMutex()Тип-значение.
bool QObject::checkConnectArgs(const char *, const QObject *, const char *)Повторная реализация этой функции больше невозможно.
const char * QObject::className() constПовторная реализация этой функции больше не поддерживается.
void QObject::insertChild(QObject *)Взамен повторно реализуйте QObject::childEvent() и обрабатывайте события QEvent::ChildAdded.
QVariant QObject::property(const char *) constПовторная реализация этой функции больше не поддерживается.
void QObject::removeChild(QObject *)Взамен повторно реализуйте QObject::childEvent() и обрабатывайте события QEvent::ChildRemoved.
void QObject::setName(const char *)Сеттер.
bool QObject::setProperty(const char *, const QVariant &)Сеттер.
bool QPaintDevice::cmd(int , QPainter * , QPDevCmdParam *)Портируйте на новый QPaintEngine API.
Qt::HANDLE QPaintDevice::handle() constПортируйте на новый QPaintDevice API.
HDC QPaintDevice::handle() constПортируйте на новый QPaintDevice API.
void QPopupMenu::activateItemAt(int)Портируйте на новый QMenu API.
void QPopupMenu::menuContentsChanged()Портируйте на новый QMenu API.
void QPopupMenu::menuDelPopup(QPopupMenu *)Портируйте на новый QMenu API.
void QPopupMenu::menuInsPopup(QPopupMenu *)Портируйте на новый QMenu API.
void QPopupMenu::menuStateChanged()Портируйте на новый QMenu API.
void QPopupMenu::setActiveItem(int)Портируйте на новый QMenu API.
void QPopupMenu::setCheckable(bool)Портируйте на новый QMenu API.
void QPopupMenu::setId(int, int)Портируйте на новый QMenu API.
void QPopupMenu::updateItem(int)Портируйте на новый QMenu API.
int QPrinter::resolution() constВызовите QPrinter::setResolution() для изменения разрешающей способности.
void QPrinter::setColorMode(ColorMode)Взамен создайте подкласс QPrintEngine.
void QPrinter::setCreator(const QString &)Взамен создайте подкласс QPrintEngine.
void QPrinter::setDocName(const QString &)Взамен создайте подкласс QPrintEngine.
void QPrinter::setFromTo(int, int)Взамен создайте подкласс QPrintEngine.
void QPrinter::setFullPage(bool)Взамен создайте подкласс QPrintEngine.
void QPrinter::setMinMax(int, int)Взамен создайте подкласс QPrintEngine.
void QPrinter::setNumCopies(int)Взамен создайте подкласс QPrintEngine.
void QPrinter::setOrientation(Orientation)Взамен создайте подкласс QPrintEngine.
void QPrinter::setOutputFileName(const QString &)Взамен создайте подкласс QPrintEngine.
void QPrinter::setOutputToFile(bool)Взамен создайте подкласс QPrintEngine.
void QPrinter::setPageOrder(PageOrder)Взамен создайте подкласс QPrintEngine.
void QPrinter::setPageSize(PageSize)Взамен создайте подкласс QPrintEngine.
void QPrinter::setPaperSource(PaperSource)Взамен создайте подкласс QPrintEngine.
void QPrinter::setPrintProgram(const QString &)Взамен создайте подкласс QPrintEngine.
void QPrinter::setPrinterName(const QString &)Взамен создайте подкласс QPrintEngine.
void QPrinter::setPrinterSelectionOption(const QString &)Взамен создайте подкласс QPrintEngine.
void QPrinter::setResolution(int)Взамен создайте подкласс QPrintEngine.
void QProcess::addArgument(const QString &)Не использовалась полиморфно в Qt.
void QProcess::closeStdin()Не использовалась полиморфно в Qt.
bool QProcess::launch(const QByteArray & buf, QStringList *)Не использовалась полиморфно в Qt.
bool QProcess::launch(const QString & buf, QStringList *)Не использовалась полиморфно в Qt.
QString QProcess::readLineStderr()Не использовалась полиморфно в Qt.
QString QProcess::readLineStdout()Не использовалась полиморфно в Qt.
QByteArray QProcess::readStderr()Не использовалась полиморфно в Qt.
QByteArray QProcess::readStdout()Не использовалась полиморфно в Qt.
void QProcess::setArguments(const QStringList &)Не использовалась полиморфно в Qt.
void QProcess::setWorkingDirectory(const QDir &)Не использовалась полиморфно в Qt.
bool QProcess::start(QStringList *)Не использовалась полиморфно в Qt.
void QProcess::writeToStdin(const QByteArray &)Не использовалась полиморфно в Qt.
bool QProgressBar::setIndicator(QString &, int, int)Не использовалась полиморфно в Qt.
void QProgressBar::setProgress(int)Не использовалась полиморфно в Qt.
void QProgressBar::setTotalSteps(int)Не использовалась полиморфно в Qt.
void QPushButton::setAutoDefault(bool)Не использовалась полиморфно в Qt.
void QPushButton::setDefault(bool)Не использовалась полиморфно в Qt.
void QPushButton::setIsMenuButton(bool)Не использовалась полиморфно в Qt.
void QPushButton::setOn(bool)Соединяет взамен с QPushButton::toggled(bool).
void QRadioButton::setChecked(bool)Соединяет взамен в QRadioButton::toggled(bool).
uchar * QScreen::cache(int , int)Портируйте на новый QScreen API.
void QScreen::set(unsigned int , unsigned int , unsigned int , unsigned)Портируйте на новый QScreen API.
void QScreen::uncache(uchar *)Портируйте на новый QScreen API.
void QScrollBar::setOrientation(Orientation)Сеттер.
void QScrollBar::setTracking(bool)Сеттер.
void QSignalMapper::setMapping(const QObject *, const QString &)Сеттер.
void QSignalMapper::setMapping(const QObject *, int)Сеттер.
void QSlider::rangeChange()Повторно реализуйте QSlider::sliderChange() взамен.
void QSlider::setOrientation(Orientation)Сеттер.
void QSlider::setPalette(const QPalette &)Сеттер.
void QSlider::setTickInterval(int)Сеттер.
void QSlider::setTickmarks(TickSetting)Сеттер.
void QSlider::setTracking(bool)Сеттер.
void QSlider::setValue(int)Повторно реализуйте QSlider::sliderChange() взамен.
void QSlider::valueChange()Повторно реализуйте QSlider::sliderChange() взамен.
QString QSpinBox::cleanText() constПортируйте на новый QSpinBox API.
void QSpinBox::interpretText()Портируйте на новый QSpinBox API.
QString QSpinBox::prefix() constПортируйте на новый QSpinBox API.
void QSpinBox::rangeChange()Повторно реализуйте QSpinBox::sliderChange() взамен.
void QSpinBox::selectAll()Портируйте на новый QSpinBox API.
void QSpinBox::setButtonSymbols(ButtonSymbols)Сеттер.
void QSpinBox::setPrefix(const QString &)Сеттер.
void QSpinBox::setSpecialValueText(const QString &)Сеттер.
void QSpinBox::setSuffix(const QString &)Сеттер.
void QSpinBox::setValidator(const QValidator *)Сеттер.
void QSpinBox::setValue(int)Соединяет с QSpinBox::valueChanged().
void QSpinBox::setWrapping(bool)Сеттер.
void QSpinBox::stepDown()Повторно реализуйте QSpinBox::stepBy() взамен.
void QSpinBox::stepUp()Повторно реализуйте QSpinBox::stepBy() взамен.
QString QSpinBox::suffix() constПортируйте на новый QSpinBox API.
void QSpinBox::updateDisplay()Портируйте на новый QSpinBox API.
void QSpinBox::valueChange()Повторно реализуйте QSpinBox::sliderChange() взамен.
void QSplitter::drawSplitter(QPainter *, QCOORD, QCOORD, QCOORD, QCOORD)Взамен повторно реализуйте QStyle::drawPrimitive() и обрабатывайте handle QStyle::PE_Splitter.
void QSplitter::setOpaqueResize(bool)Сеттер.
void QSplitter::setOrientation(Orientation)Сеттер.
void QSplitter::setResizeMode(QWidget *, ResizeMode)Сеттер.
void QSqlDatabase::setDatabaseName(const QString &)Сеттер.
void QSqlDatabase::setHostName(const QString &)Сеттер.
void QSqlDatabase::setPassword(const QString &)Сеттер.
void QSqlDatabase::setPort(int)Сеттер.
void QSqlDatabase::setUserName(const QString &)Сеттер.
QSqlQuery QSqlDriver::createQuery() constПортируйте на новый QSqlDriver API.
QString QSqlDriver::nullText() constПортируйте на новый QSqlDriver API.
QSqlRecord QSqlDriver::record(const QSqlQuery &) constПортируйте на новый QSqlDriver API.
QSqlRecordInfo QSqlDriver::recordInfo(const QSqlQuery &) constПортируйте на новый QSqlDriver API.
QSqlRecordInfo QSqlDriver::recordInfo(const QString &) constПортируйте на новый QSqlDriver API.
void QSqlError::setDatabaseText(const QString &)Тип-значение.
void QSqlError::setDriverText(const QString &)Тип-значение.
void QSqlError::setNumber(int)Тип-значение.
void QSqlError::setType(int)Тип-значение.
QSqlError::~QSqlError()Тип-значение.
void QSqlField::setName(const QString &)Тип-значение.
void QSqlField::setNull()Тип-значение.
void QSqlField::setReadOnly(bool)Тип-значение.
void QSqlField::setValue(const QVariant &)Тип-значение.
QVariant QSqlField::value() constТип-значение.
QSqlField::~QSqlField()Тип-значение.
void QSqlFieldInfo::setCalculated(bool)Тип-значение.
void QSqlFieldInfo::setGenerated(bool)Тип-значение.
void QSqlFieldInfo::setTrim(bool)Тип-значение.
QSqlFieldInfo::~QSqlFieldInfo()Тип-значение.
void QSqlIndex::append(const QSqlField &)Тип-значение.
void QSqlIndex::append(const QSqlField &, bool)Тип-значение.
void QSqlIndex::setCursorName(const QString &)Тип-значение.
void QSqlIndex::setDescending(int, bool)Тип-значение.
void QSqlIndex::setName(const QString &)Тип-значение.
QVariant QSqlQuery::value(int) constСуществует как невиртуальная функция.
void QSqlRecord::append(const QSqlField &)Тип-значение.
void QSqlRecord::clear()Тип-значение.
void QSqlRecord::clearValues(bool)Тип-значение.
void QSqlRecord::insert(int, const QSqlField &)Тип-значение.
void QSqlRecord::remove(int)Тип-значение.
void QSqlRecord::setGenerated(const QString &, bool)Тип-значение.
void QSqlRecord::setGenerated(int, bool)Тип-значение.
void QSqlRecord::setNull(int)Тип-значение.
void QSqlRecord::setNull(const QString &)Тип-значение.
void QSqlRecord::setValue(const QString &, const QVariant &)Тип-значение.
void QSqlRecord::setValue(int, const QVariant &)Тип-значение.
QString QSqlRecord::toString(const QString &, const QString &) constТип-значение.
QStringList QSqlRecord::toStringList(const QString &) constТип-значение.
QVariant QSqlRecord::value(int) constТип-значение.
QVariant QSqlRecord::value(const QString &) constТип-значение.
QSqlRecord::~QSqlRecord()Тип-значение.
void QStyle::polishPopupMenu(QPopupMenu *)Повторно реализуйте QStyle::polish(QWidget *) взамен.
int QTabBar::addTab(QTab *)Повторно реализуйте QTabBar::tabInserted() взамен.
int QTabBar::insertTab(QTab *, int)Повторно реализуйте QTabBar::tabInserted() взамен.
void QTabBar::layoutTabs()Повторно реализуйте QTabBar::tabLayoutChange() взамен.
void QTabBar::paint(QPainter *, QTab *, bool) constПовторно реализуйте QTabBar::paintEvent() взамен.
void QTabBar::paintLabel(QPainter *, const QRect &, QTab *, bool) constПовторно реализуйте QTabBar::paintEvent() взамен.
void QTabBar::removeTab(QTab *)Повторно реализуйте QTabBar::tabRemoved() взамен.
QTab * QTabBar::selectTab(const QPoint &) constПовторно реализуйте QTabBar::mousePressEvent() взамен.
void QTabBar::setCurrentTab(int)Соединяет с сигналом QTabBar::currentChanged() signal.
void QTabBar::setCurrentTab(QTab *)Соединяет с сигналом QTabBar::currentChanged() signal.
void QTabBar::setShape(Shape)Сеттер.
void QTabBar::setTabEnabled(int, bool)Сеттер.
void QTabWidget::addTab(QWidget *, const QString &)Повторно реализуйте QTabWidget::tabInserted() взамен.
void QTabWidget::addTab(QWidget *, const QIcon &, const QString &)Повторно реализуйте QTabWidget::tabInserted() взамен.
void QTabWidget::addTab(QWidget *, QTab *)Повторно реализуйте QTabWidget::tabInserted() взамен.
void QTabWidget::insertTab(QWidget *, const QIcon &, const QString &, int)Повторно реализуйте QTabWidget::tabInserted() взамен.
void QTabWidget::insertTab(QWidget *, const QString &, int)Повторно реализуйте QTabWidget::tabInserted() взамен.
void QTabWidget::insertTab(QWidget *, QTab *, int)Повторно реализуйте QTabWidget::tabInserted() взамен.
void QTabWidget::removePage(QWidget *)Повторно реализуйте QTabWidget::tabRemoved() взамен.
void QTabWidget::showPage(QWidget *)Взамен соединяет с QTabWidget::currentChanged().
void QTextEdit::append(const QString &)Используйте Q3TextEdit или портируйте на новый QTextEdit API.
void QTextEdit::clear()Используйте Q3TextEdit или портируйте на новый QTextEdit API.
void QTextEdit::clearParagraphBackground(int)Используйте Q3TextEdit или портируйте на новый QTextEdit API.
void QTextEdit::copy()Используйте Q3TextEdit или портируйте на новый QTextEdit API.
QPopupMenu * QTextEdit::createPopupMenu(const QPoint &)Используйте Q3TextEdit или портируйте на новый QTextEdit API.
QPopupMenu * QTextEdit::createPopupMenu()Используйте Q3TextEdit или портируйте на новый QTextEdit API.
void QTextEdit::cut()Используйте Q3TextEdit или портируйте на новый QTextEdit API.
void QTextEdit::del()Используйте Q3TextEdit или портируйте на новый QTextEdit API.
void QTextEdit::doKeyboardAction(KeyboardAction)Используйте Q3TextEdit или портируйте на новый QTextEdit API.
void QTextEdit::ensureCursorVisible()Используйте Q3TextEdit или портируйте на новый QTextEdit API.
bool QTextEdit::find(const QString &, bool, bool, bool, int *, int *)Используйте Q3TextEdit или портируйте на новый QTextEdit API.
bool QTextEdit::focusNextPrevChild(bool)Используйте Q3TextEdit или портируйте на новый QTextEdit API.
int QTextEdit::heightForWidth(int) constИспользуйте Q3TextEdit или портируйте на новый QTextEdit API.
void QTextEdit::insert(const QString &, bool, bool, bool)Используйте Q3TextEdit или портируйте на новый QTextEdit API.
void QTextEdit::insertAt(const QString &, int, int)Используйте Q3TextEdit или портируйте на новый QTextEdit API.
void QTextEdit::insertParagraph(const QString &, int)Используйте Q3TextEdit или портируйте на новый QTextEdit API.
void QTextEdit::moveCursor(CursorAction, bool)Используйте Q3TextEdit или портируйте на новый QTextEdit API.
void QTextEdit::paste()Используйте Q3TextEdit или портируйте на новый QTextEdit API.
void QTextEdit::pasteSubType(const QCString &)Используйте Q3TextEdit или портируйте на новый QTextEdit API.
void QTextEdit::placeCursor(const QPoint &, QTextCursor *)Используйте Q3TextEdit или портируйте на новый QTextEdit API.
void QTextEdit::redo()Используйте Q3TextEdit или портируйте на новый QTextEdit API.
void QTextEdit::removeParagraph(int)Используйте Q3TextEdit или портируйте на новый QTextEdit API.
void QTextEdit::removeSelectedText(int)Используйте Q3TextEdit или портируйте на новый QTextEdit API.
void QTextEdit::removeSelection(int)Используйте Q3TextEdit или портируйте на новый QTextEdit API.
void QTextEdit::scrollToAnchor(const QString &)Используйте Q3TextEdit или портируйте на новый QTextEdit API.
void QTextEdit::scrollToBottom()Используйте Q3TextEdit или портируйте на новый QTextEdit API.
void QTextEdit::selectAll(bool)Используйте Q3TextEdit или портируйте на новый QTextEdit API.
void QTextEdit::setAlignment(int)Используйте Q3TextEdit или портируйте на новый QTextEdit API.
void QTextEdit::setBold(bool)Используйте Q3TextEdit или портируйте на новый QTextEdit API.
void QTextEdit::setColor(const QColor &)Используйте Q3TextEdit или портируйте на новый QTextEdit API.
void QTextEdit::setCurrentFont(const QFont &)Используйте Q3TextEdit или портируйте на новый QTextEdit API.
void QTextEdit::setCursorPosition(int, int)Используйте Q3TextEdit или портируйте на новый QTextEdit API.
void QTextEdit::setFamily(const QString &)Используйте Q3TextEdit или портируйте на новый QTextEdit API.
void QTextEdit::setItalic(bool)Используйте Q3TextEdit или портируйте на новый QTextEdit API.
void QTextEdit::setLinkUnderline(bool)Используйте Q3TextEdit или портируйте на новый QTextEdit API.
void QTextEdit::setMimeSourceFactory(QMimeSourceFactory *)Используйте Q3TextEdit или портируйте на новый QTextEdit API.
void QTextEdit::setModified(bool)Используйте Q3TextEdit или портируйте на новый QTextEdit API.
void QTextEdit::setOverwriteMode(bool)Используйте Q3TextEdit или портируйте на новый QTextEdit API.
void QTextEdit::setPaper(const QBrush &)Используйте Q3TextEdit или портируйте на новый QTextEdit API.
void QTextEdit::setParagraphBackgroundColor(int, const QColor &)Используйте Q3TextEdit или портируйте на новый QTextEdit API.
void QTextEdit::setPointSize(int)Используйте Q3TextEdit или портируйте на новый QTextEdit API.
void QTextEdit::setReadOnly(bool)Используйте Q3TextEdit или портируйте на новый QTextEdit API.
void QTextEdit::setSelection(int, int, int, int, int)Используйте Q3TextEdit или портируйте на новый QTextEdit API.
void QTextEdit::setSelectionAttributes(int, const QColor &, bool)Используйте Q3TextEdit или портируйте на новый QTextEdit API.
void QTextEdit::setStyleSheet(QStyleSheet *)Используйте Q3TextEdit или портируйте на новый QTextEdit API.
void QTextEdit::setTabStopWidth(int)Используйте Q3TextEdit или портируйте на новый QTextEdit API.
void QTextEdit::setText(const QString &, const QString &)Используйте Q3TextEdit или портируйте на новый QTextEdit API.
void QTextEdit::setTextFormat(TextFormat)Используйте Q3TextEdit или портируйте на новый QTextEdit API.
void QTextEdit::setUnderline(bool)Используйте Q3TextEdit или портируйте на новый QTextEdit API.
void QTextEdit::setUndoDepth(int)Используйте Q3TextEdit или портируйте на новый QTextEdit API.
void QTextEdit::setUndoRedoEnabled(bool)Используйте Q3TextEdit или портируйте на новый QTextEdit API.
void QTextEdit::setVerticalAlignment(VerticalAlignment)Используйте Q3TextEdit или портируйте на новый QTextEdit API.
void QTextEdit::setWordWrap(WordWrap)Используйте Q3TextEdit или портируйте на новый QTextEdit API.
void QTextEdit::setWrapColumnOrWidth(int)Используйте Q3TextEdit или портируйте на новый QTextEdit API.
void QTextEdit::setWrapPolicy(WrapPolicy)Используйте Q3TextEdit или портируйте на новый QTextEdit API.
void QTextEdit::sync()Используйте Q3TextEdit или портируйте на новый QTextEdit API.
void QTextEdit::undo()Используйте Q3TextEdit или портируйте на новый QTextEdit API.
void QTextEdit::zoomIn()Используйте Q3TextEdit или портируйте на новый QTextEdit API.
void QTextEdit::zoomIn(int)Используйте Q3TextEdit или портируйте на новый QTextEdit API.
void QTextEdit::zoomOut(int)Используйте Q3TextEdit или портируйте на новый QTextEdit API.
void QTextEdit::zoomOut()Используйте Q3TextEdit или портируйте на новый QTextEdit API.
void QTextEdit::zoomTo(int)Используйте Q3TextEdit или портируйте на новый QTextEdit API.
QString QTimeEdit::sectionFormattedText(int)Портируйте на новый QDateTimeEdit.
void QTimeEdit::setAutoAdvance(bool)Портируйте на новый QDateTimeEdit.
void QTimeEdit::setHour(int)Портируйте на новый QDateTimeEdit.
void QTimeEdit::setMaxValue(const QTime &)Портируйте на новый QDateTimeEdit.
void QTimeEdit::setMinValue(const QTime &)Портируйте на новый QDateTimeEdit.
void QTimeEdit::setMinute(int)Портируйте на новый QDateTimeEdit.
void QTimeEdit::setRange(const QTime &, const QTime &)Портируйте на новый QDateTimeEdit.
void QTimeEdit::setSecond(int)Портируйте на новый QDateTimeEdit.
void QTimeEdit::setSeparator(const QString &)Портируйте на новый QDateTimeEdit.
void QTimeEdit::setTime(const QTime &)Портируйте на новый QDateTimeEdit.
void QToolBar::clear()Сеттер.
void QToolBar::setLabel(const QString &)Сеттер.
void QToolBar::setStretchableWidget(QWidget *)Сеттер.
void QToolButton::setIconSet(const QIcon &)Сеттер.
void QToolButton::setOn(bool)Соединяет взамен с QToolButton::toggled(bool).
void QToolButton::setTextLabel(const QString &, bool)Сеттер.
void QToolButton::setToggleButton(bool)Сеттер.
void QToolButton::setUsesBigPixmap(bool)Сеттер.
void QToolButton::setUsesTextLabel(bool)Сеттер.
void QToolTip::maybeTip(const QPoint &)Port to the new QToolTip API.
void QUrl::addPath(const QString &)Тип-значение.
bool QUrl::cdUp()Тип-значение.
bool QUrl::parse(const QString &)Тип-значение.
void QUrl::reset()Тип-значение.
void QUrl::setEncodedPathAndQuery(const QString &)Тип-значение.
void QUrl::setFileName(const QString &)Тип-значение.
void QUrl::setHost(const QString &)Тип-значение.
void QUrl::setPassword(const QString &)Тип-значение.
void QUrl::setPath(const QString &)Тип-значение.
void QUrl::setPort(int)Тип-значение.
void QUrl::setProtocol(const QString &)Тип-значение.
void QUrl::setQuery(const QString &)Тип-значение.
void QUrl::setRef(const QString &)Тип-значение.
void QUrl::setUser(const QString &)Тип-значение.
QString QUrl::toString(bool, bool) constТип-значение.
QUrl::~QUrl()Тип-значение.
QWaitCondition::~QWaitCondition()Тип-значение.
bool QWhatsThis::clicked(const QString &)Портируйте на новый QWhatsThis API.
QString QWhatsThis::text(const QPoint &)Портируйте на новый QWhatsThis API.
QWhatsThis::~QWhatsThis()Портируйте на новый QSpinBox API.
void QWidget::adjustSize()Повторно реализуйте QWidget::sizeHint() взамен.
bool QWidget::close(bool)Повторно реализуйте QWidget::closeEvent().
void QWidget::create(WId, bool, bool)Не поддерживается в Qt 4.
bool QWidget::customWhatsThis() constНе поддерживается в Qt 4.
void QWidget::destroy(bool, bool)Не поддерживается в Qt 4.
void QWidget::enabledChange(bool)Повторно реализуйте QWidget::changeEvent() и обрабатывайте QEvent::EnabledChange.
void QWidget::fontChange(const QFont &)Повторно реализуйте QWidget::changeEvent() и обрабатывайте QEvent::FontChange.
void QWidget::imComposeEvent(QIMEvent *)Повторно реализуйте QWidget::inputMethodEvent() взамен.
void QWidget::imEndEvent(QIMEvent *)Повторно реализуйте QWidget::inputMethodEvent() взамен.
void QWidget::imStartEvent(QIMEvent *)Повторно реализуйте QWidget::inputMethodEvent() взамен.
void QWidget::move(int, int)Сеттер.
void QWidget::paletteChange(const QPalette &)Повторно реализуйте QWidget::changeEvent() и обрабатывайте QEvent::PaletteChange и/или QEvent::ApplicationPaletteChange.
void QWidget::polish()Повторно реализуйте event() и обрабатывайте события типа QEvent::Polish.
void QWidget::reparent(QWidget *, WFlags, const QPoint &, bool)Повторно реализуйте QWidget::event() и обрабатывайте QEvent::Reparent.
void QWidget::resize(int, int)Повторно реализуйте QWidget::resizeEvent() взамен.
void QWidget::setAcceptDrops(bool)Сеттер.
void QWidget::setActiveWindow()Повторно реализуйте QWidget::changeEvent() и обрабатывайте QEvent::ActivationChange.
void QWidget::setAutoMask(bool)Сеттер.
void QWidget::setBackgroundColor(const QColor &)Сеттер.
void QWidget::setBackgroundMode(BackgroundMode)Сеттер.
void QWidget::setBackgroundOrigin(BackgroundOrigin)Сеттер.
void QWidget::setBackgroundPixmap(const QPixmap &)Сеттер.
void QWidget::setCaption(const QString &)Повторно реализуйте QWidget::changeEvent() и обрабатывайте QEvent::WindowTitleChange.
void QWidget::setCursor(const QCursor &)Сеттер.
void QWidget::setEnabled(bool)Повторно реализуйте QWidget::changeEvent() и обрабатывайте QEvent::EnabledChange.
void QWidget::setEraseColor(const QColor &)Сеттер.
void QWidget::setErasePixmap(const QPixmap &)Сеттер.
void QWidget::setFocus()Повторно реализуйте QWidget::focusInEvent() или QWidget::focusOutEvent().
void QWidget::setFocusPolicy(FocusPolicy)Сеттер.
void QWidget::setFocusProxy(QWidget *)Сеттер.
void QWidget::setFont(const QFont &)Повторно реализуйте QWidget::changeEvent() и обрабатывайте QEvent::FontChange и/или QEvent::ApplicationFontChange.
void QWidget::setGeometry(int, int, int, int)Сеттер.
void QWidget::setGeometry(const QRect &)Сеттер.
void QWidget::setIcon(const QPixmap &)Повторно реализуйте QWidget::changeEvent() и обрабатывайте QEvent::WindowIconChange.
void QWidget::setIconText(const QString &)Повторно реализуйте QWidget::changeEvent() и обрабатывайте QEvent::IconTextChange.
void QWidget::setKeyCompression(bool)Сеттер.
void QWidget::setMask(const QRegion &)Сеттер.
void QWidget::setMask(const QBitmap &)Сеттер.
void QWidget::setMaximumSize(int, int)Сеттер.
void QWidget::setMicroFocusHint(int, int, int, int, bool, QFont *)Сеттер.
void QWidget::setMinimumSize(int, int)Сеттер.
void QWidget::setMouseTracking(bool)Повторно реализуйте QWidget::changeEvent() и обрабатывайте QEvent::MouseTrackingChange.
void QWidget::setPalette(const QPalette &)Повторно реализуйте QWidget::changeEvent() и обрабатывайте QEvent::PaletteChange и/или QEvent::ApplicationPaletteChange.
void QWidget::setPaletteBackgroundColor(const QColor &)Сеттер.
void QWidget::setPaletteBackgroundPixmap(const QPixmap &)Сеттер.
void QWidget::setSizeIncrement(int, int)Сеттер.
void QWidget::setSizePolicy(QSizePolicy)Сеттер.
void QWidget::setUpdatesEnabled(bool)Сеттер.
void QWidget::setWFlags(WFlags)Сеттер.
void QWidget::show()Повторно реализуйте QWidget::showEvent().
void QWidget::showMaximized()Повторно реализуйте QWidget::changeEvent() и обрабатывайте QEvent::WindowStateChange.
void QWidget::showMinimized()Повторно реализуйте QWidget::changeEvent() и обрабатывайте QEvent::WindowStateChange.
void QWidget::showNormal()Повторно реализуйте QWidget::changeEvent() и обрабатывайте QEvent::WindowStateChange.
void QWidget::styleChange(QStyle &)Повторно реализуйте QWidget::changeEvent() и обрабатывайте QEvent::StyleChange.
void QWidget::unsetCursor()Сеттер.
void QWidget::windowActivationChange(bool)Повторно реализуйте QWidget::changeEvent() и обрабатывайте QEvent::ActivationChange.


Copyright © 2008 Trolltech Торговые марки
Qt 4.3.5