index.lxp@lxpwrap=x5679_252ehtm.htm

来自「GUI Programming with Python」· HTM 代码 · 共 283 行

HTM
283
字号
    <table border="0" cellspacing="0" cellpadding="3" width="100%"><tr><td>    <div align="center" id="bldcontent">      <a href="../default.htm"><img src="../images/opendocs.png" width="63" height="76" border="0"></a>      <br>      <div class="symbol">Your OpenSource Publisher&#153;</div>    </div>      </td></tr></table>    <div align="center" class="author">      	<a href="../products.lxp">Products</a>	&nbsp;|&nbsp;	<a href="../wheretobuy.lxp">Where to buy</a>	&nbsp;|&nbsp;	<a href="../bookstore.lxp">Retailers</a>	&nbsp;|&nbsp;	<a href="../faq.lxp">FAQ</a>	&nbsp;|&nbsp;        <a href="../writeforus.lxp">Write for Us.</a>        &nbsp;|&nbsp;        <a href="#contact">Contact Us.</a>  </div>    <table border="0" cellspacing="3" cellpadding="0" width="100%"><tr><td width="100%">      <div class="content">        <table border="0" cellspacing="2" cellpadding="0" width="100%"><tr><td width="100%">          <div align="center"><H4 CLASS="AUTHOR"><A NAME="AEN5">Boudewijn Rempt</A><br><a href="../../https@secure.linuxports.com/opendocs/default.htm"><img src=odpyqt125.png></a><br>ISBN: 0-97003300-4-4<br><a href="../../https@secure.linuxports.com/opendocs/default.htm">Available from bookstores everywhere or you can order it here.</a><p>You can download the source files for the book <a href="pyqtsrc.tgz">(code / eps) here.</a><hr></div>                    <HTML><HEAD><TITLE>A row of split windows</TITLE><METANAME="GENERATOR"CONTENT="Modular DocBook HTML Stylesheet Version 1.72"><LINKREL="HOME"TITLE="GUI Programming with Python: QT Edition"HREF="book1.htm"><LINKREL="UP"TITLE="User Interface Paradigms"HREF="c5584.htm"><LINKREL="PREVIOUS"TITLE="Back to the MDI windows"HREF="x5657.htm"><LINKREL="NEXT"TITLE="A stack of documents"HREF="x5700.htm"></HEAD><BODYCLASS="SECT1"BGCOLOR="#FFFFFF"TEXT="#000000"LINK="#0000FF"VLINK="#840084"ALINK="#0000FF"><DIVCLASS="NAVHEADER"><TABLESUMMARY="Header navigation table"WIDTH="100%"BORDER="0"CELLPADDING="0"CELLSPACING="0"><TR><THCOLSPAN="3"ALIGN="center">GUI Programming with Python: QT Edition</TH></TR><TR><TDWIDTH="10%"ALIGN="left"VALIGN="bottom"><A accesskey="P" href="index.lxp@lxpwrap=x5657_252ehtm.htm">Prev</A></TD><TDWIDTH="80%"ALIGN="center"VALIGN="bottom">Chapter 16. User Interface Paradigms</TD><TDWIDTH="10%"ALIGN="right"VALIGN="bottom"><A accesskey="N" href="index.lxp@lxpwrap=x5700_252ehtm.htm">Next</A></TD></TR></TABLE><HRALIGN="LEFT"WIDTH="100%"></DIV><DIVCLASS="SECT1"><H1CLASS="SECT1">A row of split windows</A></H1><P>We'll make a little viewmanager class will      arrange the views separated by splitter bars. That class will be      based on the <TTCLASS="CLASSNAME">QSplitter</TT> class. I would      advise you never to use a splitter to separate documents (in      contrast to BlackAdder, which does use this paradigm) &#8212;      it's so uncommon that people will get confused.  Building the      class is a useful little introduction to      <TTCLASS="CLASSNAME">QSplitter</TT>, though. A splitter is best      used if you have a list of items or icons on the left, and a      document pane to the right. Indeed, you might want to use one of      the other arrangements for showing more than one window in the      document pane, and separate the workspace from a selection list      using a <TTCLASS="CLASSNAME">QSplitter</TT>. If you do this, the      selection list functions as a kind of always-visible windows      menu.</P><PRECLASS="PROGRAMLISTING">"""splitspace.py - splitter view manager for the mdi frameworkcopyright: (C) 2001, Boudewijn Remptemail:     boud@rempt.xs4all.nl"""from qt import *from resources import TRUE, FALSEclass SplitSpace(QSplitter):    def __init__(self, *args):        apply(QSplitter.__init__,(self, ) + args)        self.views=[]            def addView(self, view):        self.views.append(view)    </PRE><P>Clever and clean as Qt might be, it is not      immune to the inevitable inconsistencies caused by prolonged      development. Some classes, such as the      <TTCLASS="CLASSNAME">QTabWidget</TT> we saw above, have special      insert or add methods for the insertion or addition of child      widgets; others, like <TTCLASS="CLASSNAME">QWorkspace</TT> take      care of their children if those children are created with them      as the parent. This also holds for      <TTCLASS="CLASSNAME">QSplitter</TT> &#8212; create a widget with a      <TTCLASS="CLASSNAME">QSplitter</TT> object as a parent, and it will      be automatically managed by the splitter. Therefore the      <TTCLASS="FUNCTION">addView()</TT> function has little to do.</P><PRECLASS="PROGRAMLISTING">    def removeView(self, view): pass    def activeWindow(self):        for view in self.views:            if view.hasFocus():                return view        return self.views[0]    </PRE><P>In order to be able to figure out which of      the widgets managed by the splitter is the currently active one,      we have to loop over the list and retrieve the one with focus.      If that fails, we fall back on a hack: just return the first      one.</P><PRECLASS="PROGRAMLISTING">    def cascade(self): pass    def tile(self): pass    def canCascade(self):        return FALSE    def canTile(self):        return FALSE    </PRE><P>Obviously, cascading nor tiling is relevant for this      class.</P></DIV><DIVCLASS="NAVFOOTER"><HRALIGN="LEFT"WIDTH="100%"><TABLESUMMARY="Footer navigation table"WIDTH="100%"BORDER="0"CELLPADDING="0"CELLSPACING="0"><TR><TDWIDTH="33%"ALIGN="left"VALIGN="top"><A accesskey="P" href="index.lxp@lxpwrap=x5657_252ehtm.htm">Prev</A></TD><TDWIDTH="34%"ALIGN="center"VALIGN="top"><A accesskey="H" href="index.lxp@lxpwrap=book1_252ehtm">Home</A></TD><TDWIDTH="33%"ALIGN="right"VALIGN="top"><A accesskey="N" href="index.lxp@lxpwrap=x5700_252ehtm.htm">Next</A></TD></TR><TR><TDWIDTH="33%"ALIGN="left"VALIGN="top">Back to the MDI windows</TD><TDWIDTH="34%"ALIGN="center"VALIGN="top"><A accesskey="U" href="index.lxp@lxpwrap=c5584_252ehtm.htm">Up</A></TD><TDWIDTH="33%"ALIGN="right"VALIGN="top">A stack of documents</TD></TR></TABLE></DIV></BODY></HTML>      </td>      </tr>      </table>      </td>    </tr>  </table>      

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?