Описание класса QMainWindowКласс QMainWindow предоставляет главное окно приложения. Далее... #include <QMainWindow> Унаследован от: QWidget. Открытые типы
Свойства
Открытые функции
Открытые слоты
Сигналы
Переопределённые защищённые функции
Дополнительные унаследованные члены
Подробное описаниеКласс QMainWindow предоставляет главное окно приложения. Структура главного окна в QtГлавное окно предоставляет структуру для создания пользовательского интерфейса приложения. Qt имеет класс QMainWindow и связанные с ним классы для управления главным окном. QMainWindow имеет собственный компоновщик, в который вы можете добавлять QToolBar'ы, QDockWidget'ы, QMenuBar, и QStatusBar. Компоновщик имеет центральную область, которая может быть занята любым виджетом. Вы можете увидеть изображение компоновщика ниже. Замечание: Создание главного окна без центрального виджета не поддерживается. Вы должны иметь центральный виджет даже если это просто «заполнитель». Создание компонентов главного окнаЦентральный виджет, обычно, представляет собой стандартный виджет Qt, такой как QTextEdit или QGraphicsView. Пользовательские виджеты могут быть использованы для расширенных приложений. Вы устанавливаете центральный виджет с помощью функции setCentralWidget(). Главное окно имеет или однодокументный (ОДИ, англ. SDI - single document interface) или многодокументный (МДИ, англ. MDI - multiple document interface) интерфейс. Вы создаёте МДИ приложение, используя QMdiArea в качестве центрального виджета. Теперь мы рассмотрим каждый из виджетов, которые могут быть добавлены в главное окно. Мы приводим примеры того, как создавать и добавлять их. Создание менюQt реализует меню в классе QMenu и QMainWindow хранит их в QMenuBar. QAction'ы (действия) добавляются в меню, которое отображает их как элементы меню. Вы можете добавить новое меню на панель меню главного окна, взывая функцию menuBar(), которая вернет QMenuBar для окна, и, затем, добавить меню с помощью функции QMenuBar::addMenu(). QMainWindow уже содержит панель меню по умолчанию, но вы можете добавить свою панель с помощью функции setMenuBar(). Если вы хотите реализовать собственную панель меню (т.е.., не используя виджет QMenuBar), вы можете установить её с помощью функции setMenuWidget(). Следующий пример о том, как создать меню: void MainWindow::createMenus() { fileMenu = menuBar()->addMenu(tr("&File")); fileMenu->addAction(newAct); fileMenu->addAction(openAct); fileMenu->addAction(saveAct); Функция createPopupMenu() создает всплывающие меню, когда главное окно принимает события контекстного меню. Реализация по умолчанию, генерирует меню с отмечаемыми действиями на основе прикрепляемых виджетов и панелей инструментов. Вы можете переопределить createPopupMenu() для своего меню. Создание панелей инструментовПанель инструментов реализована в классе QToolBar. Вы можете добавить панель инструментов в главное окно с помощью функции addToolBar(). Вы управляете начальным положением панели инструментов, задавая ей определённое значение Qt::ToolBarArea. Вы можете разделить область, вставляя разрыв панели инструментов (toolbar break) - думайте о нём как о переводе строки при редактировании текста - с помощью функций addToolBarBreak() или insertToolBarBreak(). Вы можете также ограничить размещение панели пользователем, с помощью QToolBar::setAllowedAreas() и QToolBar::setMovable(). Размер иконок панели инструментов может быть найден с помощью iconSize(). Размер - платформозависимый; вы можете установить фиксированный размер с помощью функции setIconSize(). Вы можете изменять внешний вид всех кнопок на панели инструментов с помощью функции setToolButtonStyle(). Ниже приведен пример создания панели инструментов: void MainWindow::createToolBars() { fileToolBar = addToolBar(tr("File")); fileToolBar->addAction(newAct); Создание прикрепляемых виджетовПрикрепляемые виджеты реализованы в классе QDockWidget. Прикрепляемый виджет - это окно, которое может быть прикреплено в главном окне. Вы можете добавить прикрепляемый виджет с помощью функции addDockWidget(). Имеется четыре зоны для размещения прикрепляемых виджетов, которые определяются перечислением Qt::DockWidgetArea: слева, справа, сверху и снизу. [FIXME]You can specify which dock widget area that should occupy the corners where the areas overlap with setCorner(). По умолчанию каждая область может иметь только один ряд (вертикальный или горизонтальный) прикрепляемых виджетов, но если вы разрешите наложение (nesting) с помощью setDockNestingEnabled(), прикрепляемые виджеты будут добавляться в любом направлении. Два прикрепляемых виджета могут быть также наложены друг на друга. Затем используется QTabBar, чтобы выбрать виджет, который должен быть отображен. Мы приводим пример, как создавать и добавлять прикрепляемые виджеты в главном окне: QDockWidget *dockWidget = new QDockWidget(tr("Dock Widget"), this); dockWidget->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); dockWidget->setWidget(dockWidgetContents); addDockWidget(Qt::LeftDockWidgetArea, dockWidget); Строка состоянияВы можете установить строку состояния с помощью setStatusBar(), но одна создаётся при первом вызове функции statusBar() (которая возвращает строку состояния главного окна). Как её использовать, смотрите QStatusBar. Сохранение состоянияQMainWindow может сохранить состояние своей компоновки с помощью saveState(); позже, можно восстановить состояние с помощью restoreState(). Будут сохранены позиции и размеры (относительно размера главного окна) панелей инструментов и прикрепляемых виджетов. Смотрите также QMenuBar, QToolBar, QStatusBar, QDockWidget, Пример "Application", Пример "Dock Widgets", Пример "MDI", Пример "SDI" и Пример "Menus". Описание типов-членовenum QMainWindow::DockOption
|
Константа | Значение | Описание |
---|---|---|
QMainWindow::AnimatedDocks | 0x01 | Идентично свойству animated. |
QMainWindow::AllowNestedDocks | 0x02 | Идентично свойству dockNestingEnabled. |
QMainWindow::AllowTabbedDocks | 0x04 | Пользователь может поместить один прикрепляемый виджет поверх другого. Два виджета накладываются (stacked) и появляется панель вкладок, для выбора отображения одного из них. |
QMainWindow::ForceTabbedDocks | 0x08 | Каждая область прикрепления содержит один набор прикрепляемых виджетов со вкладками. Другими словами, прикрепляемые виджеты не могут располагаться рядом с друг другом. Если этот флаг установлен, то флаг AllowNestedDocks не имеет никакого эффекта. |
QMainWindow::VerticalTabs | 0x10 | Две вертикальные области прикрепления, по (обеим) сторонам главного окна, отображают свои вкладки вертикально. Если этот флаг не установлен, все области прикрепления отображают их вкладки снизу. Предполагает AllowTabbedDocks. Смотрите также setTabPosition(). |
Эти флаги упраляют только тем, как прикрепляемые виджеты могут быть помещены в QMainWindow. Они не могут преобразовать прикрепляемые виджеты чтобы привести в соответствие заданным параметрам. По этой причине, они должны быть установлены до того, как любые прикрепляемые виджеты будут добавлены в главное окно. Исключением из этого являются флаги AnimatedDocks и VerticalTabs, которые могут быть установлены в любое время.
Это перечисление было введено или модифицировано в Qt 4.3.
Тип DockOptions - это typedef для QFlags<DockOption>. Он хранит комбинацию значений (по ИЛИ) для DockOption.
Это свойство указывает, являются ли действия с прикрепляемыми виджетами или панелями инструментов анимироваными.
Когда прикрепляемый виджет или панель инструментов перетаскиваются по главному окну, главное окно регулирует их содержимое, чтобы показать, где прикрепляемый виджет или панель инструментов будут прикреплены, если их отпустить. Установка этого свойства заставит QMainWindow перемещать его содержимое с плавной анимацией. Сброс этого свойства заставит содержимое прилипать к своему новому положению.
По умолчанию это свойство установлено. Оно может быть сброшено, если главное окно содержит виджеты, которые медленно изменяют свои размеры или перерисовываются.
Установка этого свойства идентична установке флага AnimatedDocks помощью функции setDockOptions().
Это свойство было введено в Qt 4.2.
Функции доступа:
bool | isAnimated () const |
void | setAnimated ( bool enabled ) |
Это свойство указывает, могут ли прикрепляемые виджеты быть вложены (nested).
Если это свойство равно false, то области прикрепления могут содержать только один ряд (горизонтальный или вертикальный) прикрепляемых виджетов. Если свойство равно true, то область, занимаемая прикрепляемым виджетом, может быть разделена в одном из направлений, чтобы вместить в себя больше виджетов.
Вложенность прикрепляемых виджетов необходима в приложениях, которые содержат много прикрепляемых виджетов. Это дает пользователю больше свободы в организации главного окна. Тем не менее, вложенность ведёт к более сложному (и менее интуитивному) поведению, когда прикрепляемый виджет перетаскивается по главному окну, так как существует множество путей, в которых отпускаемый виджет может быть помещён в области прикрепления.
Установка этого свойства идентична установке флага AllowNestedDocks с помощью функции setDockOptions().
Это свойство было введено в Qt 4.2.
Функции доступа:
bool | isDockNestingEnabled () const |
void | setDockNestingEnabled ( bool enabled ) |
Это свойство указывает поведение прикрепления QMainWindow.
Значение по умолчанию равно AnimatedDocks | AllowTabbedDocks.
Это свойство было введено в Qt 4.3.
Функции доступа:
DockOptions | dockOptions () const |
void | setDockOptions ( DockOptions options ) |
Данное свойство указывает, является ли панель вкладок для присоединяемых виджетов со вкладками установленной в режим документа.
По умолчанию равно false.
Это свойство было введено в Qt 4.5.
Функции доступа:
bool | documentMode () const |
void | setDocumentMode ( bool enabled ) |
Смотрите также QTabBar::documentMode.
Это свойство определяет размер значков на панели инструментов в этом главном окне.
По умолчанию устанавливается умалчиваемый размер стиля ГПИ (GUI). Заметьте, что используемые значки должны быть, по меньшей мере, этого же размера, так как значки масштабируются только в сторону уменьшения.
Функции доступа:
QSize | iconSize () const |
void | setIconSize ( const QSize & iconSize ) |
Данное свойство содержат форму вкладки, используемой для присоединяемых виджетов со вкладками.
По умолчанию равно QTabWidget::Rounded.
Это свойство было введено в Qt 4.5.
Функции доступа:
QTabWidget::TabShape | tabShape () const |
void | setTabShape ( QTabWidget::TabShape tabShape ) |
Смотрите также setTabPosition().
Это свойство определяет стиль кнопок на панели инструментов в этом главном окне.
По умолчанию равно Qt::ToolButtonIconOnly.
Функции доступа:
Qt::ToolButtonStyle | toolButtonStyle () const |
void | setToolButtonStyle ( Qt::ToolButtonStyle toolButtonStyle ) |
Это свойство описывает, использует ли главное окно унифицированный вид (unified look) заголовка и панели инструментов на Mac OS X.
По умолчанию это свойство равно false и имеет смысл только для Mac OS X 10.4 и выше.
Если оно установлено равным true, тогда верхняя область панели инструментов перемещается с помощью Carbon HIToolbar или Cocoa NSToolbar (в зависимости от того с чем была собрана Qt - с Carbon или с Cocoa). Все панели инструментов в верхней области панели инструментов и любые панели инструментов, добавленные после её перемещения. Это означает несколько вещей.
Возврат к значению false удалит все эти ограничения.
Флаг Qt::WA_MacBrushedMetal имеет приоритет над этим свойством.
Это свойство было введено в Qt 4.3.
Функции доступа:
bool | unifiedTitleAndToolBarOnMac () const |
void | setUnifiedTitleAndToolBarOnMac ( bool set ) |
Конструирует QMainWindow с родителем parent и определенными флагами flags.
QMainWindow сам устанавливает флаг Qt::Window, и поэтому всегда будет создана как виджет верхнего уровня.
Уничтожает главное окно.
Добавляет заданный прикрепляемый виджет (dockwidget) в определённую область area.
Добавляет прикрепляемый виджет dockwidget в заданную область area в направлении, задаваемом orientation.
Добавляет панель инструментов toolbar в определённую область area, главного окна. Панель toolbar размещается в конце текущего блока панелей (т.е. строки) Если панель toolbar уже находится под управлением главного окна, то она только переместится в область area.
Смотрите также insertToolBar(), addToolBarBreak() и insertToolBarBreak().
Это перегруженная функция.
Эквивалентно вызову addToolBar(Qt::TopToolBarArea, toolbar)
Это перегруженная функция.
Создаёт объект QToolBar, устанавливая его заголовок в title, и вставляет его в верхнюю область панелей инструментов.
Смотрите также setWindowTitle().
Добавляет разрыв панели инструментов в заданную область area после всех других объектов, присутствующих в данный момент.
Возвращает центральный виджет главного окна. Эта функция вернёт ноль, если центральный виджет не был установлен.
Смотрите также setCentralWidget().
Переопределено из QWidget::contextMenuEvent().
Возвращает область прикрепления, которая занимает указанный угол corner.
Смотрите также setCorner().
Возвращает всплывающее меню, содержащее отмечаемые записи для панелей инструментов и прикрепляемых виджетов имеющиеся в главном окне. Если панели инструментов и прикрепляемые виджеты отсутствуют, эта функция возвращает нулевой указатель.
По умолчанию эта функция вызывается главным окном, когда пользователь активирует контекстное меню, обычно щелчком правой кнопкой мыши на панели инструментов или прикрепляемом виджете.
Если вы хотите создать собственное всплывающее меню, переопределите эту функцию и верните вновь созданное всплывающее меню. Владение всплывающим меню передается вызвавшему объекту.
Смотрите также addDockWidget(), addToolBar() и menuBar().
Возвращает область Qt::DockWidgetArea, в которой содержится dockwidget. Если dockwidget не был добавлен в главное окно, эта функция вернет Qt::NoDockWidgetArea.
Смотрите также addDockWidget(), splitDockWidget() и Qt::DockWidgetArea.
Переопределено от QObject::event().
Этот сигнал посылается, когда изменяется размер значков, использующихся в окне. Новый размер значков передается в iconSize.
Вы можете соединить этот сигнал с другими компонентами, чтобы помочь вашему приложению сохранять надлежащий вид.
Смотрите также setIconSize().
Вставляет панель инструментов toolbar перед панелью before, в область, занимаемую панелью before. Например, если принято размещать элементы слева направо, то toolbar будет размещена слева от панели инструментов before, в горизонтальной области.
Смотрите также insertToolBarBreak(), addToolBar() и addToolBarBreak().
Вставляет разрыв перед панелью before.
Возвращает панель меню для главного окна. Эта функция создает и возвращает пустую панель меню, если панель не существует.
Если вы хотите, чтобы все окна в Mac-приложении использовали общую панель меню, не используйте эту функцию, чтобы создавать её, потому что панель меню, созданная здесь будет иметь этот экземпляр QMainWindow в качестве родителя. Вместо этого, вы должны создать панель меню не имеющую родителя, которую вы можете, затем, сделать общей среди всех Mac-окон. Создайте панель меню без родителя таким способом:
QMenuBar *menuBar = new QMenuBar(0);
Смотрите также setMenuBar().
Возвращает панель меню для главного окна. Эта функция возвращает null, если панель меню еще не создана.
Эта функция была введена в Qt 4.2.
Смотрите также setMenuWidget().
Удаляет dockwidget из компоновщика главного окна и скрывает его. Заметьте, что dockwidget не удаляется.
Удаляет панель инструментов toolbar из компоновщика главного окна и скрывает его. Заметьте, что toolbar не удаляется.
[FIXME] Удаляет разрыв панели инструментов, вставленный перед панелью before.
Восстанавливает состояние dockwidget, если он создан после вызова функции restoreState(). Возвращает true, если состояние было восстановлено; в противном случае возвращает false.
Смотрите также restoreState() и saveState().
Восстанавливает состояние state панелей инструментов и прикрепляемых виджетов этого главного окна. Номер версии (version) сравнивается с тем, что сохранен в state. Если они не соответствуют, состояние главного окна остаётся неизменным, и эта функция вернёт false; в противном случае, состояние восстанавливается, и эта функция вернёт true.
Для восстановления геометрии, сохраненной с использованием QSettings, вы можете использовать примерно такой код:
void MainWindow::readSettings() { QSettings settings("MyCompany", "MyApp"); restoreGeometry(settings.value("myWidget/geometry").toByteArray()); restoreState(settings.value("myWidget/windowState").toByteArray()); }
Смотрите также saveState(), QWidget::saveGeometry(), QWidget::restoreGeometry() и restoreDockWidget().
Сохраняет текущее состояние панелей инструментов и прикрепляемых виджетов главного окна. Номер версии (version) сохраняется как часть данных.
Свойство objectName используется для идентификации каждого QToolBar и QDockWidget. Вы должны быть уверены, что это свойство уникально для каждого QToolBar'а и QDockWidget'а, которые вы добавляете в QMainWindow
Для восстановления сохраненного состояния, передайте возвращённое значение и номер версии (version) в функцию restoreState().
Для сохранения геометрии при закрытии окна вы можете реализовать событие закрытия, например, так:
void MyMainWindow::closeEvent(QCloseEvent *event) { QSettings settings("MyCompany", "MyApp"); settings.setValue("geometry", saveGeometry()); settings.setValue("windowState", saveState()); QMainWindow::closeEvent(event); }
Смотрите также restoreState(), QWidget::saveGeometry() и QWidget::restoreGeometry().
Устанавливает заданный виджет (widget), в качестве центрального виджета главного окна.
Замечание: QMainWindow становится владельцем объекта, на который указывает widget, и удаляет его в соответствующий момент.
Смотрите также centralWidget().
Устанавливает заданную область (area) прикрепления виджета, чтобы занять указанный угол corner.
Смотрите также corner().
Устанавливает в главном окне панель меню menuBar.
Замечание: QMainWindow становится владельцем объекта, на который указывает menuBar, и удаляет его в соответствующий момент.
Смотрите также menuBar().
Устанавливает в главном окне панель меню menuBar.
QMainWindow становится владельцем объекта, на который указывает menuBar, и удаляет его в соответствующий момент.
Эта функция была введена в Qt 4.2.
Смотрите также menuWidget().
Устанавливает в главном окне строку состояния statusbar.
Установка строки состояния в 0 удалит её из главного окна. Замечание: QMainWindow становится владельцем объекта, на который указывает statusbar, и удаляет его в соответствующий момент.
Смотрите также statusBar().
Устанавливает позицию вкладки для заданного присоединяемого виджета areas равной заданной tabPosition. По умолчанию все области пристыковки показывают свои вкладки внизу.
Замечание: Опция присоединения VerticalTabs заменяет позиции вкладки, установленной этим методом.
Эта функция была введена в Qt 4.5.
Смотрите также tabPosition() и setTabShape().
Разделяет пространство, охватываемое прикрепляемым виджетом first на две части, перемещает прикрепляемый виджет first в первую часть, а прикрепляемый виджет second во вторую часть.
Аргумент orientation определяет, как разделяется пространство: Qt::Horizontal разделяет пространство второго виджета справа от первого; Qt::Vertical разделяет пространство второго виджета ниже первого.
Замечание: если first в данный момент прикреплен в виде вкладки, то second будет добавлен как новая вкладка, а не как сосед виджета first. Это происходит из-за того, что одна вкладка может содержать только один прикрепляемый виджет.
Замечание: Qt::LayoutDirection влияет на порядок расположения прикрепляемых виджетов в двух частях разделённой области. Когда разрешена компоновка с расположением справа налево, размещение прикрепляемых виджетов осуществляется в обратную сторону.
Смотрите также tabifyDockWidget(), addDockWidget() и removeDockWidget().
Возвращает строку состояния главного окна. Эта функция создает и возвращает пустую строку состояния, если она не существует.
Смотрите также setStatusBar().
Возвращает позицию вкладки для area.
Замечание: Опция присоединения VerticalTabs заменяет позиции вкладки, возвращаемые этой функцией.
Эта функция была введена в Qt 4.5.
Смотрите также setTabPosition() и tabShape().
Возвращает присоединяемые виджеты, чьи вкладки изменяются вместе с dockwidget.
Эта функция была введена в Qt 4.5.
Смотрите также tabifyDockWidget().
Помещает прикрепляемый виджет second над виджетом first, создавая в главном окне область прикрепления со вкладками.
Смотрите также tabifiedDockWidgets().
Возвращает Qt::ToolBarArea для toolbar. Если панель toolbar не была добавлена в главное окно, эта функция вернет Qt::NoToolBarArea.
Смотрите также addToolBar(), addToolBarBreak() и Qt::ToolBarArea.
Возвращает, имеется ли разрыв перед панелью toolbar.
Смотрите также addToolBarBreak() и insertToolBarBreak().
Этот сигнал посылается, когда меняется стиль, используемый для кнопок панели инструментов. Новый стиль передается в параметре toolButtonStyle.
Вы можете соединить этот сигнал с другими компонентами, чтобы помочь вашему приложению сохранять надлежащий вид.
Смотрите также setToolButtonStyle().
Попытка перевода Qt документации. Если есть желание присоединиться, или если есть замечания или пожелания, то заходите на форум: Перевод Qt документации на русский язык... Люди внесшие вклад в перевод: Команда переводчиков |