QMainWindow类

Qt 3.0.5

主页 | 所有的类 | 主要的类 | 注释的类 | 分组的类 | 函数

QMainWindow类参考

QMainWindow类提供一个有菜单条、锚接窗口(例如工具条)和一个状态条的主应用程序窗口。 详情请见……

#include <qmainwindow.h>

继承了QWidget

所有成员函数的列表。

公有成员

  • QMainWindow ( QWidget * parent = 0, const char * name = 0, WFlags f = WType_TopLevel )
  • QMenuBar * menuBar () const
  • QStatusBar * statusBar () const
  • QToolTipGroup * toolTipGroup () const
  • virtual void setCentralWidget ( QWidget * w )
  • QWidget * centralWidget () const
  • virtual void setDockEnabled ( Dock dock, bool enable )
  • bool isDockEnabled ( Dock dock ) const
  • bool isDockEnabled ( QDockArea * area ) const
  • virtual void setDockEnabled ( QDockWindow * dw, Dock dock, bool enable )
  • bool isDockEnabled ( QDockWindow * tb, Dock dock ) const
  • bool isDockEnabled ( QDockWindow * dw, QDockArea * area ) const
  • virtual void addDockWindow ( QDockWindow * dockWindow, Dock edge = DockTop, bool newLine = FALSE )
  • virtual void addDockWindow ( QDockWindow * dockWindow, const QString & label, Dock edge = DockTop, bool newLine = FALSE )
  • virtual void moveDockWindow ( QDockWindow * dockWindow, Dock edge = DockTop )
  • virtual void moveDockWindow ( QDockWindow * dockWindow, Dock edge, bool nl, int index, int extraOffset = -1 )
  • virtual void removeDockWindow ( QDockWindow * dockWindow )
  • bool rightJustification () const
  • bool usesBigPixmaps () const
  • bool usesTextLabel () const
  • bool dockWindowsMovable () const
  • bool opaqueMoving () const
  • bool getLocation ( QDockWindow * dw, Dock & dock, int & index, bool & nl, int & extraOffset ) const
  • QPtrList<QDockWindow> dockWindows ( Dock dock ) const
  • QPtrList<QDockWindow> dockWindows () const
  • void lineUpDockWindows ( bool keepNewLines = FALSE )
  • bool isDockMenuEnabled () const
  • bool hasDockWindow ( QDockWindow * dw )
  • void addToolBar ( QDockWindow *, Dock = DockTop, bool newLine = FALSE )  (废弃)
  • void addToolBar ( QDockWindow *, const QString & label, Dock = DockTop, bool newLine = FALSE )  (废弃)
  • void moveToolBar ( QDockWindow *, Dock = DockTop )  (废弃)
  • void moveToolBar ( QDockWindow *, Dock, bool nl, int index, int extraOffset = -1 )  (废弃)
  • void removeToolBar ( QDockWindow * )  (废弃)
  • bool toolBarsMovable () const  (废弃)
  • QPtrList<QToolBar> toolBars ( Dock dock ) const
  • void lineUpToolBars ( bool keepNewLines = FALSE )  (废弃)
  • QDockArea * leftDock () const
  • QDockArea * rightDock () const
  • QDockArea * topDock () const
  • QDockArea * bottomDock () const
  • virtual bool isCustomizable () const
  • bool appropriate ( QDockWindow * dw ) const
  • enum DockWindows { OnlyToolBars, NoToolBars, AllDockWindows }
  • QPopupMenu * createDockWindowMenu ( DockWindows dockWindows = AllDockWindows ) const

公有槽

信号

属性

保护成员

保护槽

相关函数

  • QTextStream & operator<< ( QTextStream & ts, const QMainWindow & mainWindow )
  • QTextStream & operator>> ( QTextStream & ts, QMainWindow & mainWindow )

详细描述

QMainWindow类提供一个有菜单条、锚接窗口(例如工具条)和一个状态条的主应用程序窗口。

主窗口通常用在提供一个大的中央窗口部件(例如文本编辑或者绘制画布)以及周围菜单、工具条和一个状态条。QMainWindow常常被继承,因为这使得封装中央部件、菜单和工具条以及窗口状态变得更容易。继承使创建当用户点击菜单项或者工具条按钮时被调用的槽成为可能。你也可以使用Qt设计器来创建主窗口。我们将简要地回顾一下有关添加菜单项和工具条按钮,然后描述QMainWindow自己的便捷。

    QMainWindow *mw = new QMainWindow;
    QTextEdit *edit = new QTextEdit( mw, "editor" );
    edit->setFocus();
    mw->setCaption( "Main Window" );
    mw->setCentralWidget( edit );
    mw->show();
    

QMainWindow可以像上面那样显示地来被创建。中央窗口部件是通过setCentralWidget()设置地。弹出菜单可以被添加到默认工具条,窗口部件可以被添加到状态条,工具条和锚接窗口可以被添加到任何一个锚接区域。

        ApplicationWindow * mw = new ApplicationWindow();
        mw->setCaption( "Qt Example - Application" );
        mw->show();

上面代码中的ApplicationWindow是我们自己写的QMainWindow的子类,这是一个使用QMainWindow的常用方法。(源代码取自application/main.cppapplication/application.cppaction/main.cppaction/application.cpp。)

在继承的时候,我们在子类的构造函数中添加菜单项和工具条。如果我们已经直接创建了一个QMainWindow实例,我们可以很容易地通过传递QMainWindow实例代替作为父对象的this指针来添加菜单项和工具条。

        QPopupMenu * help = new QPopupMenu( this );
        menuBar()->insertItem( "&Help", help );

        help->insertItem( "&About", this, SLOT(about()), Key_F1 );

这里我们添加了有一个菜单项的新菜单。这个菜单已经被插入QMainWindow默认提供的并且可以通过menuBar()函数访问的菜单条。当这个菜单项被点击时,这个槽被调用。

        QToolBar * fileTools = new QToolBar( this, "file operations" );
        fileTools->setLabel( "File Operations" );
        QToolButton * fileOpen
            = new QToolButton( openIcon, "Open File", QString::null,
                               this, SLOT(choose()), fileTools, "open file" );

这部分提取显示的是有一个工具条按钮的工具条的创建。QMainWindow为工具条提供了四个锚接区域。当一个工具条被作为QMainWindow(或者继承类)实例 的子对象被创建时,它将会被放置到一个锚接区域中(默认是Top锚接区域)。当这个工具条按钮被点击时,这个槽被调用。任何锚接窗口可以使用addDockWindow(),或者通过把QMainWindow作为父对象来创建的方法来被添加到一个锚接区域中。

        e = new QTextEdit( this, "editor" );
        e->setFocus();
        setCentralWidget( e );
        statusBar()->message( "Ready", 2000 );

创建完菜单和工具条,我们创建一个大的中央窗口部件的实例,给它焦点并且把它设置为主窗口的中央窗口部件。在这个实例中,我们也已经通过statusBar()函数设置好了状态条,显示初始信息两秒。注意你可以添加其它的窗口部件到状态条重,例如标签,来显示更多的状态信息。详细情况请参考QStatusBar文档,特别是addWidget()函数。

通常我们想让一个工具条按钮和一个菜单项同步。例如,如果用户点击“加粗”工具条按钮,我们希望“加粗”菜单项被选中。这种同步可以通过创建操作并且把它们添加到工具条和菜单上来自动实现。

        QAction * fileOpenAction;
        fileOpenAction = new QAction( "Open File", QPixmap( fileopen ), "&Open",
                                      CTRL+Key_O, this, "open" );
        connect( fileOpenAction, SIGNAL( activated() ) , this, SLOT( choose() ) );

这里我们创建了一个有图标的操作,这个图标要用在这个操作所被添加到的菜单和工具条中。我们也给定这个操作一个菜单名称“&Open;”和一个键盘快捷键。我们已经建立的这个连接在用户点击这个菜单项或者这个工具条按钮时将会被使用。

        QPopupMenu * file = new QPopupMenu( this );
        menuBar()->insertItem( "&File", file );
        fileOpenAction->addTo( file );

上面这部分提取显示一个弹出菜单的创建。我们把这个菜单添加到QMainWindow的菜单条中并且添加我们的操作。

        QToolBar * fileTools = new QToolBar( this, "file operations" );
        fileTools->setLabel( "File Operations" );
        fileOpenAction->addTo( fileTools );

这里我们创建一个作为QMainWindow的子对象的工具条并且把我们的操作添加到这个工具条中。

现在我们来探险QMainWindow提供的功能。

主窗口将会注意锚接区域和中央窗口部件的几何形状,但是中央窗口部件的其它所有方面都留给你了。如果你指定QMainWindow作为父对象来创建菜单条或者状态条,QMainWindow会自动检测它们,或者你可以使用提供的menuBar()和statusBar()函数。如果一个窗口部件也没有,menuBar()和statusBar()函数创建一个合适的窗口部件,并且更新窗口的布局来得到空间。

QMainWindow提供了一个连接到状态条的QToolTipGrouptoolTipGroup()函数提供了对默认QToolTipGroup的访问。它不能设置一个不同的工具提示组。

新的锚接窗口和工具条可以通过使用addDockWindow()来被添加到QMainWindow中。锚接窗口可以使用moveDockWindow()来移动并且使用removeDockWindow()来移除。QMainWindow允许默认锚接窗口(工具条)锚接在所有它的锚接区域中(上、下、左、右)。你可以使用setDockEnabled()为锚接窗口而使锚接区域生效/失效。当添加或者移动锚接窗口时,你可以指定它们的“边缘”(锚接区域)。当前可用的边缘有:TopLeftRightBottomMinimized (有效地一个“隐藏”锚接区域)和TornOff(浮动)。关于这些区域的解释请参考Qt::Dock。注意*ToolBar函数被考虑向后兼容,所有的新代码都应该使用*DockWindow函数。QToolBar是QDockWindow的子类,所以所有对于锚接窗口能工作地函数对于工具条也一样可以工作。如果用户通过点击锚接窗口地窗口句柄来最小化一个锚接窗口,那么锚接窗口将会被移到Minimized锚接区域。如果用户点击关闭按钮,那么锚接窗口被隐藏并且只能再次通过使用锚接窗口菜单来再次被显示。

一些函数会全局地改变QMainWindow的外观:

  • QDockWindow::setHorizontalStretchable()和QDockWindow::setVerticalStretchable()被用于指定锚接窗口和工具条是可延伸的。
  • setUsesBigPixmaps()被用于设置工具按钮是应该用小像素映射还是大像素映射(更多信息请参考QIconSet)。
  • setUsesTextLabel()被用于设置工具按钮是否应该在显示像素映射之外还显示文本标签(更多信息请参考QToolButton)。

用户可以把锚接窗口拖入任何生效的锚接区域中。锚接窗口也可以在一个锚接区域被拖动,例如重新排列一些工具条的顺序。锚接窗口也可以被拖动出任何锚接区域(取消锚接或者“浮动”)。你可以使用setDockWindowsMovable()把锚接窗口设置为生效的(默认)和失效的。如果用户点击浮动锚接窗口的关闭按钮,然后锚接窗口将会消失。为了重新得到锚接窗口,用户必须右键点击一个锚接区域,弹出一个锚接窗口菜单,然后点击我们要恢复的锚接窗口的名字。可视的锚接窗口在菜单中它们的名字之前有一个勾。锚接窗口菜单会根据createDockWindowMenu()的需要自动被创建。因为它可能不总是适合把一个锚接窗口显示到这个菜单中,setAppropriate()函数被用来告知主窗口这个锚接窗口菜单是否应该包含一个特定的锚接窗口。双击锚接窗口句柄(通常在锚接窗口的左侧)会使这个锚接窗口取消锚接(浮动)。双击浮动锚接窗口的标题栏将会锚接这个浮动的锚接窗口。

Minimized边缘是一个隐藏的锚接区域。如果这个锚接区域是生效的,用户可以隐藏(最小化)锚接窗口或者通过点击锚接窗口句柄显示(恢复)一个最小化的锚接窗口。如果用户在一个句柄上方悬浮鼠标光标,锚接窗口的标题会被作为工具提示显示(请参考QDockWindow::caption()或QToolBar::label()),所以如果你使Minimized锚接区域生效,最好为每一个锚接窗口指定一个有意义的标题或者标签。为了能够程序化地最小化一个锚接窗口,请使用一个带有Minimized边缘的moveDockWindow()。

锚接窗口默认是被透明地移动,也就是在拖动期间,一个边框矩形会在屏幕上被绘制出来呈现锚接窗口在移动时的位置。如果你想让锚接窗口在移动时被正常显示,请使用setOpaqueMoving()。

锚接窗口的定位,也就是它的锚接区域和在锚接区域中的位置,可以通过调用getLocation()来被决定。可移动的锚接窗口可以通过lineUpDockWindows()被排列成一行来使浪费的空间最小化。锚接区域的指针可以由topDock()、leftDock()、rightDock()和bottomDock()提供。如果isCustomizable()返回真(它默认返回假),一个自定义的菜单项会被添加入弹出的锚接窗口菜单。如果你想提供这个额外的菜单项,重新实现isCustomizable()和customize(),例如,允许用户改变和主窗口以及它的工具条和锚接窗口相关的设置。

主窗口的菜单条默认是固定的(在上面)。如果你想有一个可移动的菜单条,创建一个QMenuBar作为一个在它自己可移动的锚接窗口中可伸展的窗口部件并且限制这个锚接窗口只在TopBottom锚接区域存在:

    QToolBar *tb = new QToolBar( this );
    addDockWindow( tb, tr( "Menubar" ), Top, FALSE );
    QMenuBar *mb = new QMenuBar( tb );
    mb->setFrameStyle( QFrame::NoFrame );
    tb->setStretchableWidget( mb );
    setDockEnabled( tb, Left, FALSE );
    setDockEnabled( tb, Right, FALSE );
    

有多个锚接窗口的应用程序可以选择为了以后(例如,在下个对话中)恢复当前的锚接窗口布局来把它们保存起来。你可以通过使用QMainWindow的流操作符来做到这点。

为了保存所有锚接窗口的布局和位置,请这样做:

  QFile f( filename );
  if ( f.open( IO_WriteOnly ) ) {
      QTextStream ts( &f );
      ts << *mainWindow;
      f.close();
  }
  

为了恢复锚接窗口的位置和大小(通常是当这个应用程序再次开始),请这样做:

  QFile f( filename );
  if ( f.open( IO_ReadOnly ) ) {
      QTextStream ts( &f );
      ts >> *mainWindow;
      f.close();
  }
  

QSettings类可以和这些流操作符联合使用来存放这个应用程序的设置。

QMainWindow对锚接窗口和工具条的管理很明显地是由QDockArea在后面完成的。

对于多文档界面(MDI),使用QWorkspace作为中央窗口部件。

把锚接窗口(例如工具条)添加到QMainWindow的锚接区域是很简单的。如果被提供的锚接区域对于你的应用程序是不够的,我们建议你创建一个QWidget的子类并且把你自己的锚接区域(请参考QDockArea)添加到这个子类中,因为QMainWindow只提供了由它提供的标准锚接区域的特定功能。

也可以参考QToolBarQDockWindowQStatusBarQActionQMenuBarQPopupMenuQToolTipGroupQDialog主窗口和相关类


成员类型文档

QMainWindow::DockWindows

右键点击锚接区域会弹出锚接窗口菜单(createDockWindowMenu()被自动调用)。当被调用时,在代码中你可以通过这个枚举变量指定哪些项应该出现在菜单中。

  • QMainWindow::OnlyToolBars - 菜单将会列出所有的工具条,但没有任何其它锚接窗口。
  • QMainWindow::NoToolBars - 菜单将会列出除工具条之外的所有的锚接窗口。
  • QMainWindow::AllDockWindows - 菜单将会列出所有的工具条和其它锚接窗口。(这是默认值。)


成员函数文档

QMainWindow::QMainWindow ( QWidget * parent = 0, const char * name = 0, WFlags f = WType_TopLevel )

构造一个空的主窗口。parentname和窗口部件标记f被传递给QWidget构造函数。

默认情况下,窗口部件标记被设置为WType_TopLevel而不是只把它作为QWidget的0。如果你不想让你的QMainWindow为一个顶级窗口部件,你将需要把f设置为0。

QMainWindow::~QMainWindow ()

销毁这个对象并且释放所有已经分配的资源。

void QMainWindow::addDockWindow ( QDockWindow * dockWindow, Dock edge = DockTop, bool newLine = FALSE ) [虚]

dockWindow添加到edge锚接区域。

如果newLine为假(默认),那么dockWindow被添加到edge的末尾。对于垂直边缘,末尾在下面,对于水平边缘(包含Minimized),末尾在右面。如果newLine为真,会为锚接窗口开始新的一行,并且dockWindow作为第一个(最左面或者最上面)锚接窗口。

如果dockWindow被另一个主窗口管理,它首先从那一个窗口中被移除。

void QMainWindow::addDockWindow ( QDockWindow * dockWindow, const QString & label, Dock edge = DockTop, bool newLine = FALSE ) [虚]

这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。

把标签为labeldockWindow添加到edge锚接区域。

如果newLine为假(默认),那么dockWindow被添加到edge的末尾。对于垂直边缘,末尾在下面,对于水平边缘(包含Minimized),末尾在右面。如果newLine为真,会为锚接窗口开始新的一行,并且dockWindow作为第一个(最左面或者最上面)锚接窗口。

如果dockWindow被另一个主窗口管理,它首先从那一个窗口中被移除。

void QMainWindow::addToolBar ( QDockWindow *, Dock = DockTop, bool newLine = FALSE )

这个函数是废弃的。它的提供只是为了保证旧代码能够工作。我们强烈建议在新代码中不要使用它。

void QMainWindow::addToolBar ( QDockWindow *, const QString & label, Dock = DockTop, bool newLine = FALSE )

这个函数是废弃的。它的提供只是为了保证旧代码能够工作。我们强烈建议在新代码中不要使用它。

这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。

bool QMainWindow::appropriate ( QDockWindow * dw ) const

如果适合在锚接窗口菜单中包含一个可以列出dw锚接窗口的菜单项,返回真,否则返回假。

用户可以通过点击菜单项来改变有菜单项的锚接窗口的状态(显示或者隐藏)。

调用setAppropriate()来指出一个特定锚接窗口是否应该显示在弹出菜单中。

也可以参考setAppropriate()。

QDockArea * QMainWindow::bottomDock () const

返回Bottom锚接区域的指针。

也可以参考topDock()、leftDock()和rightDock()。

QWidget * QMainWindow::centralWidget () const

返回主窗口的中央窗口部件的指针。

中央窗口部件就是被上、下、左、右锚接区域环绕的。菜单条在上锚接区域的上面。

也可以参考setCentralWidget()。

实例:qfd/qfd.cpp

void QMainWindow::childEvent ( QChildEvent * e ) [虚 保护]

监视事件,从e中接收,来保证布局被更新。

QObject中重新实现。

QPopupMenu * QMainWindow::createDockWindowMenu ( DockWindows dockWindows = AllDockWindows ) const

创建一个包含所有工具条(如果dockWindowsOnlyToolBars)、所有锚接窗口(如果dockWindowsNoToolBars)或者所有工具条和锚接窗口(如果dockWindowsAllDockWindows——默认)的锚接窗口菜单。

当需要的时候,例如当用户右键点击一个锚接区域(假如isDockMenuEnabled()返回真)时,这个函数被内部调用。如果你想自定义这个行为,你可以重新实现这个函数。

呈现工具条和锚接窗口的菜单项是可选择的。可视的锚接窗口被选择的并且隐藏的锚接窗口是被取消选择的。用户点击一个菜单项来改变它的状态(显示或者隐藏这个锚接窗口)。

这个列表和状态总是保持最新。

在当前上下文(请参考setAppropriate())中是不适合的工具条和锚接窗口不会在这个菜单中被列出来。

这个菜单也有一个把锚接窗口排成一行的菜单选项。

如果isCustomizable()返回真,一个Customize的菜单项被添加到菜单中,如果它被点击,就会调用customize()。我们提供的isCustomizable()函数返回假并且customize()什么也不做,所以它们必须在子类中被重新实现才能有用。

void QMainWindow::customize () [虚 槽]

当用户点击在锚接窗口菜单中的Customize菜单项时,这个函数被调用。

只有在isCustomizable()返回真(默认为假)时,Customize菜单项才会出现。

这个函数是有意图的,例如,提供给用户来告诉应用程序他们要自定义主窗口、锚接窗口或者锚接区域的一个手段。

默认实现是什么也不做,但是这可能在以后的Qt版本中发生改变。现在默认情况下,Customize菜单项不会显示在右键菜单中。如果你想让这项出现,那么请重新实现isCustomizable()来返回真。

也可以参考isCustomizable()。

void QMainWindow::dockWindowPositionChanged ( QDockWindow * dockWindow ) [信号]

dockWindow已经改变位置时,这个信号被发射。当锚接窗口被移入它的锚接区域或者移到另一个锚接区域(包括MinimizedTearOff锚接区域)时,位置的变化发生。

也可以参考getLocation()。

QPtrList<QDockWindow> QMainWindow::dockWindows ( Dock dock ) const

返回在dock锚接区域的所有锚接窗口的列表,而不管它们的状态。

例如,TornOff锚接区域可能包含关闭的锚接窗口,但它们会和可视锚接窗口一起被返回。

QPtrList<QDockWindow> QMainWindow::dockWindows () const

这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。

返回属于主窗口的所有锚接窗口的列表,而不管它们的状态(也就是不考虑它们是否可视)。

bool QMainWindow::dockWindowsMovable () const

如果锚接窗口是可移动的,返回真,否则返回假。详细情况请参考“dockWindowsMovable”属性。

bool QMainWindow::getLocation ( QDockWindow * dw, Dock & dock, int & index, bool & nl, int & extraOffset ) const

找到锚接窗口dw的定位。

如果锚接窗口dw在主窗口中被找到,函数返回真并且dock变量为dw所在的锚接区域并且indexdw在锚接区域中的位置索引。如果dw开始一个新行,它也设置nl为真(否则为假),并且extraOffsetdw的位移。

如果dw在主窗口中没有被找到,那么这个函数返回真并且dockindexnlextraOffset的状态都是不确定的。

如果你想保存并且恢复锚接窗口的位置,那么请使用operator>>()和operator<<()。

也可以参考operator>>()和operator<<()。

bool QMainWindow::hasDockWindow ( QDockWindow * dw )

如果dw是被主窗口知道的锚接窗口,返回真,否则返回假。

bool QMainWindow::isCustomizable () const [虚]

如果锚接区域的锚接窗口菜单包含Customize菜单项(当它被点击时,会调用customize()),返回真。默认返回假,也就是弹出菜单不包含Customize菜单选项。如果你希望用户能在锚接窗口菜单中看到它时,你将需要重新实现这个函数并且把它设置为返回真。

也可以参考customize()。

bool QMainWindow::isDockEnabled ( Dock dock ) const

如果dock锚接区域是生效的,返回真,也就是它可以接收用户拖动的锚接窗口,否则返回假。

也可以参考setDockEnabled()。

bool QMainWindow::isDockEnabled ( QDockArea * area ) const

这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。

如果area是生效的,返回真,也就是它可以接收用户拖动的锚接窗口,否则返回假。

也可以参考setDockEnabled()。

bool QMainWindow::isDockEnabled ( QDockWindow * tb, Dock dock ) const

这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。

如果dock对于锚接窗口tb是生效的,返回真,否则返回假。

也可以参考setDockEnabled()。

bool QMainWindow::isDockEnabled ( QDockWindow * dw, QDockArea * area ) const

这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。

如果area对于锚接窗口tb是生效的,返回真,否则返回假。

也可以参考setDockEnabled()。

bool QMainWindow::isDockMenuEnabled () const

如果锚接窗口菜单是生效的,返回真,否则返回假。

这个菜单会列出(appropriate())锚接窗口(它们会被显示或者隐藏)并且有一个“Line Up Dock Windows”菜单项。如果isCustomizable()返回真,它也将会有一个“Customize”菜单项。

也可以参考setDockEnabled()、lineUpDockWindows()、appropriate()和setAppropriate()。

QDockArea * QMainWindow::leftDock () const

返回Left锚接区域。

也可以参考rightDock()、topDock()和bottomDock()。

void QMainWindow::lineUpDockWindows ( bool keepNewLines = FALSE )

这个函数将会尽量紧凑地排列在可视的锚接区域(TopLeftRightBottom)中的锚接窗口。

如果keepNewLines为真,所有锚接窗口保持在它们的原有行中。如果keepNewLines为假,那么新行将别移除来达到最可能紧凑的布局。

这个方法只有在dockWindowsMovable()返回真的情况下才能够工作。

void QMainWindow::lineUpToolBars ( bool keepNewLines = FALSE )

这个函数是废弃的。它的提供只是为了保证旧代码能够工作。我们强烈建议在新代码中不要使用它。

void QMainWindow::menuAboutToShow () [保护 槽]

这个槽会从主窗口的默认铆接菜单中地aboutToShow()信号调用。默认实现是在这个槽中用所有锚接窗口和菜单条来初始化这个菜单。

如果你想对这个菜单做小的调节,你可以在这个槽中做到这一点。另外要重新实现createDockWindowMenu()。

QMenuBar * QMainWindow::menuBar () const

返回这个窗口的菜单条。

如果这里一个也没有,那么menuBar()会创建一个空的菜单条。

也可以参考statusBar()。

void QMainWindow::moveDockWindow ( QDockWindow * dockWindow, Dock edge = DockTop ) [虚]

dockWindow移动到edge的末尾。

对于垂直边缘,末尾是下面,对于水平边缘(包括Minimized),末尾是右面。

如果dockWindow被另一个主窗口管理,它首先被从那个窗口移除。

void QMainWindow::moveDockWindow ( QDockWindow * dockWindow, Dock edge, bool nl, int index, int extraOffset = -1 ) [虚]

这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。

dockWindow移动到edgeindex位置。

任何在index或者更高位置的锚接窗口的位置数都被增加并且同一行的空间都被向右移(垂直区域的向下移)。

如果nl为真,一个新的锚接窗口行会在被移动的锚接窗口所在行下面创建新行,任何和被移动的锚接窗口在一行的并且位置更高的都被移到新行中。

extraOffset是放在这个锚接窗口和锚接区域的最左面(对于垂直锚接区域是最上面)的距离。(它通常用于恢复锚接窗口的位置为用于曾经拖到的位置。)

如果dockWindow被另一个主窗口管理,它首先被从那个窗口移除。

void QMainWindow::moveToolBar ( QDockWindow *, Dock = DockTop )

这个函数是废弃的。它的提供只是为了保证旧代码能够工作。我们强烈建议在新代码中不要使用它。

void QMainWindow::moveToolBar ( QDockWindow *, Dock, bool nl, int index, int extraOffset = -1 )

这个函数是废弃的。它的提供只是为了保证旧代码能够工作。我们强烈建议在新代码中不要使用它。

这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。

bool QMainWindow::opaqueMoving () const

如果锚接窗口被不透明地移动,返回真,否则返回假。详细情况请参考“opaqueMoving”属性。

void QMainWindow::pixmapSizeChanged ( bool ) [信号]

只要setUsesBigPixmaps()被使用和当前设置不同地值调用时,这个信号就被调用。所有窗口部件都应该对这个变化做出回应,例如工具条按钮必须连接到这个信号。

void QMainWindow::removeDockWindow ( QDockWindow * dockWindow ) [虚]

假如dockWindow为非零并且被这个主窗口管理,那么从主窗口的锚接区域移除dockWindow

void QMainWindow::removeToolBar ( QDockWindow * )

这个函数是废弃的。它的提供只是为了保证旧代码能够工作。我们强烈建议在新代码中不要使用它。

QDockArea * QMainWindow::rightDock () const

返回Right锚接区域。

也可以参考leftDock()、topDock()和bottomDock()。

bool QMainWindow::rightJustification () const

如果主窗口正确对齐它的锚接窗口,返回真,否则返回假。详细情况请参考“rightJustification”属性。

void QMainWindow::setAppropriate ( QDockWindow * dw, bool a ) [虚 槽]

使用这个函数来控制dw锚接窗口的标题是否应该作为一个菜单项显示在列出锚接窗口的锚接窗口菜单中。

如果a为真,那么dw将会作为一个菜单项显示在锚接窗口菜单中。用户能够通过点击这个菜单项来改变锚接窗口的状态(显示或者隐藏),根据你的应用程序的状态,这可能是也可能不是适合的。如果a为假,dw将会被显示在弹出菜单中。

也可以参考showDockMenu()、isCustomizable()和customize()。

void QMainWindow::setCentralWidget ( QWidget * w ) [虚]

设置这个窗口的中央窗口部件为w

这个中央窗口部件被上、下、左、右锚接区域环绕。菜单条在上锚接区域的上面。

也可以参考centralWidget()。

void QMainWindow::setDockEnabled ( Dock dock, bool enable ) [虚]

如果enable为真,那么用户可以在dock区域中锚接窗口。如果enable为假,那么用户不可以在dock区域中锚接窗口。

用户可以把锚接窗口锚接(拖动)进入任何生效锚接区域。

void QMainWindow::setDockEnabled ( QDockWindow * dw, Dock dock, bool enable ) [虚]

这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。

如果enable为真,那么用户可以在dock区域中锚接窗口。如果enable为假,那么用户不可以在dock区域中锚接窗口。

通常用户可以把锚接窗口锚接(拖动)进入任何生效锚接区域。使用这个函数特定的锚接区域能够对特定地锚接窗口生效(或者失效)。

void QMainWindow::setDockMenuEnabled ( bool b ) [虚 槽]

如果b为真,那么在一个锚接窗口或者锚接区域上右键单击将会弹出锚接窗口菜单。如果b为假,那么在一个锚接窗口或者锚接区域上右键单击将不会弹出锚接窗口菜单。

这个菜单会列出(appropriate())锚接窗口(它们会被显示或者隐藏)并且有一个“Line Up Dock Windows”菜单项。如果isCustomizable()返回真,它也将会有一个“Customize”菜单项。

也可以参考lineUpDockWindows()和isDockMenuEnabled()。

void QMainWindow::setDockWindowsMovable ( bool ) [虚 槽]

设置锚接窗口是否可以移动。详细情况请参考“dockWindowsMovable”属性。

void QMainWindow::setOpaqueMoving ( bool ) [虚 槽]

设置锚接窗口是否是被不透明地移动。详细情况请参考“opaqueMoving”属性。

void QMainWindow::setRightJustification ( bool ) [虚 槽]

设置主窗口是否右对齐它的锚接窗口。详细情况请参考“rightJustification”属性。

void QMainWindow::setToolBarsMovable ( bool ) [slot]

这个函数是废弃的。它的提供只是为了保证旧代码能够工作。我们强烈建议在新代码中不要使用它。

void QMainWindow::setUpLayout () [虚 保护 槽]

设置窗口的几何形状管理。当需要的时候,它会被自动调用,所以你不需要调用它。

void QMainWindow::setUsesBigPixmaps ( bool ) [虚 槽]

设置大像素映射是否生效。详细情况请参考“usesBigPixmaps”属性。

void QMainWindow::setUsesTextLabel ( bool ) [虚 槽]

设置工具条按钮的文本标签是否生效。详细情况请参考“usesTextLabel”属性。

bool QMainWindow::showDockMenu ( const QPoint & globalPos ) [虚 保护 槽]

globalPos位置显示锚接窗口菜单。这个菜单来出锚接窗口,所以它们可以被显示(或者隐藏)、排列并且可能会被定制。如果这个菜单被显示,返回真,否则返回假。

默认实现是使用得到由createDockWindowMenu()创建的锚接窗口。如果你想使用你自己特定的弹出菜单,你可以重新实现createDockWindowMenu()。

QStatusBar * QMainWindow::statusBar () const

返回这个窗口的状态条。如果没有的话,statusBar()会创建一个空的状态条,并且如果需要也创建一个工具提示组。

也可以参考menuBar()和toolTipGroup()。

实例:qfd/qfd.cpp

void QMainWindow::toolBarPositionChanged ( QToolBar * ) [信号]

这个函数是废弃的。它的提供只是为了保证旧代码能够工作。我们强烈建议在新代码中不要使用它。

QPtrList<QToolBar> QMainWindow::toolBars ( Dock dock ) const

返回在dock锚接区域的所有工具条的列表,而不管它们的状态。

例如,TornOff锚接区域可能包含关闭的工具条,但是它们会和可视的工具条一起被返回。

也可以参考dockWindows()。

bool QMainWindow::toolBarsMovable () const

这个函数是废弃的。它的提供只是为了保证旧代码能够工作。我们强烈建议在新代码中不要使用它。

QToolTipGroup * QMainWindow::toolTipGroup () const

返回这个窗口的工具提示组。如果没有的话,toolTipGroup()会自动创建一个空的工具提示组。

也可以参考menuBar()和statusBar()。

QDockArea * QMainWindow::topDock () const

返回Top锚接区域。

也可以参考bottomDock()、leftDock()和rightDock()。

bool QMainWindow::usesBigPixmaps () const

如果大像素映射生效,返回真,否则返回假。详细情况请参考“usesBigPixmaps”属性。

bool QMainWindow::usesTextLabel () const

如果工具条按钮的文本标签生效,返回真,否则返回假。详细情况请参考“usesTextLabel”属性。

void QMainWindow::usesTextLabelChanged ( bool ) [信号]

只要setUsesTextLabel()使用与当前设置不同的值被调用,这个信号被调用。所有窗口部件应该对这个变化做出回应,例如工具条按钮必须连接到这个信号。

void QMainWindow::whatsThis () [虚 槽]

进入“这是什么?”问题模式并且立即返回。

这和QWhatsThis::enterWhatsThisMode()是相同的,但是作为主窗口对象的槽而被重新实现。这个方式可以很容易地用于弹出菜单,例如:

    QPopupMenu * help = new QPopupMenu( this );
    help->insertItem( "What's &This", this , SLOT(whatsThis()), SHIFT+Key_F1);
  

也可以参考QWhatsThis::enterWhatsThisMode()。


属性文档

bool dockWindowsMovable

This property holds whether the dock windows are movable. 这个属性保存的是锚接窗口是否可以移动。

如果为真(默认),用户可以把可移动的锚接窗口从一个QMainWindow锚接区域移动到另一个,包括浮动(TearOff)区域(也就是,锚接窗口就其自身而言作为一个窗口自由地移动)和Minimized区域(就是锚接窗口的句柄被显示在菜单条下面的地方)。可移动锚接窗口也可以在QMainWindow的锚接区域内被移动,也就是说在一个锚接区域中重新整理它们。

如果为假,用户就不能移动任何锚接窗口。

默认情况下,锚接窗口是被透明地移动(也就是在拖动的时候,只显示一个边框矩形),但是这个设置可以通过setOpaqueMoving()改变。

也可以参考setDockEnabled()和opaqueMoving

通过setDockWindowsMovable()设置属性值并且通过dockWindowsMovable()来获得属性值。

bool opaqueMoving

这个属性保存的是锚接窗口是否是被不透明地移动。

如果为真,当主窗口的锚接窗口被移动时,它显示为不透明地。如果为假(默认),它们被透明地显示(也就是一个边框矩形)。

工具条和锚接窗口的不透明移动已经被知道有一些问题。我们建议不要在这时使用这一点。我们将在稍后的发布中修改这个行为问题。

通过setOpaqueMoving()设置属性值并且通过opaqueMoving()来获得属性值。

bool rightJustification

这个属性保存的是主窗口是否右对齐它的锚接窗口。

如果失效(默认),可延伸的锚接窗口被延伸,并且不能延伸的锚接窗口被按它们需要的最小空间进行分配。因为绝大多数锚接窗口是不可延伸的,这通常会导致不对齐的右边缘结果(或者对于垂直的锚接区域是不对齐的下边缘)。如果生效,主窗口将会右对齐它的锚接窗口。

也可以参考QDockWindow::setVerticalStretchable()和QDockWindow::setHorizontalStretchable()。

通过setRightJustification()设置属性值并且通过rightJustification()来获得属性值。

bool usesBigPixmaps

这个属性保存的是大像素映射是否生效。

如果为假(默认),工具按钮将会使用小像素映射,否则大像素映射将被使用。

希望对这个设置做出反应的工具按钮和其它窗口部件要对在开始的时候读取正确的状态并且连接到主窗口部件的pixmapSizeChanged()信号连接起来负责。

通过setUsesBigPixmaps()设置属性值并且通过usesBigPixmaps()来获得属性值。

bool usesTextLabel

这个属性保存的是工具条按钮的文本标签是否生效。

如果失效(默认),工具按钮将不使用文本标签。如果生效,文本标签将被使用。

希望对这个设置做出反应的工具按钮和其它窗口部件要对在开始的时候读取正确的状态并且连接到主窗口部件的usesTextLabelChanged()信号连接起来负责。

也可以参考QToolButton::usesTextLabel

通过setUsesTextLabel()设置属性值并且通过usesTextLabel()来获得属性值。


相关函数

QTextStream & operator<< ( QTextStream & ts, const QMainWindow & mainWindow )

把QMainWindow mainWindow的锚接区域中的锚接窗口,以及MinimizedTornOff锚接窗口的布局(大小和位置)都写到文本流ts中。

例如,这可以被用于和QSettings联合使用来保存用户的布局。

也可以参考operator>>()。

QTextStream & operator>> ( QTextStream & ts, QMainWindow & mainWindow )

从文本流ts中读入QMainWindow mainWindow的锚接区域中的锚接窗口,以及MinimizedTornOff锚接窗口的布局(大小和位置)。恢复锚接窗口和锚接区域的大小和位置。布局信息必须是由operator<<()生成的。

例如,这可以被用于和QSettings联合使用来恢复用户的布局。

也可以参考operator<<()。


这个文件是Qt工具包一部分。 版权所有 © 1995-2002 Trolltech。保留所有权利。


Copyright © 2002 Trolltech Trademarks 译者:Cavendish
Qt 3.0.5版