⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qt教程一 —— 第十一章:悬在空中的砖.htm

📁 嵌入式QT开发系列文档
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0061)http://www.qtopia.org.cn/doc/qiliang.net/qt/tutorial1-12.html -->
<!-- /home/reggie/tmp/qt-3.0-reggie-5401/qt-win-commercial-3.0.5/doc/tutorial.doc:1711 --><HTML><HEAD><TITLE>Qt教程一 —— 第十一章:悬在空中的砖</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META content=Cavendish name=Translator>
<META content=http://www.qiliang.net/qt name="Qt zh_CN Documents Website">
<STYLE type=text/css>H3.fn {
	MARGIN-LEFT: 1cm; TEXT-INDENT: -1cm
}
SPAN.fn {
	MARGIN-LEFT: 1cm; TEXT-INDENT: -1cm
}
A:link {
	COLOR: #004faf; TEXT-DECORATION: none
}
A:visited {
	COLOR: #672967; TEXT-DECORATION: none
}
BODY {
	BACKGROUND: #ffffff; COLOR: black; FONT-FAMILY: "Times New Roman"
}
</STYLE>

<META content="MSHTML 6.00.2900.2180" name=GENERATOR></HEAD>
<BODY>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
  <TBODY>
  <TR bgColor=#e5e5e5>
    <TD vAlign=center><A 
      href="http://www.qtopia.org.cn/doc/qiliang.net/qt/index.html"><FONT 
      color=#004faf>主页</FONT></A> | <A 
      href="http://www.qtopia.org.cn/doc/qiliang.net/qt/classes.html"><FONT 
      color=#004faf>所有的类</FONT></A> | <A 
      href="http://www.qtopia.org.cn/doc/qiliang.net/qt/mainclasses.html"><FONT 
      color=#004faf>主要的类</FONT></A> | <A 
      href="http://www.qtopia.org.cn/doc/qiliang.net/qt/annotated.html"><FONT 
      color=#004faf>注释的类</FONT></A> | <A 
      href="http://www.qtopia.org.cn/doc/qiliang.net/qt/groups.html"><FONT 
      color=#004faf>分组的类</FONT></A> | <A 
      href="http://www.qtopia.org.cn/doc/qiliang.net/qt/functions.html"><FONT 
      color=#004faf>函数</FONT></A> </TD>
    <TD vAlign=center align=right><IMG height=32 
      src="Qt教程一 —— 第十一章:悬在空中的砖.files/logo32.png" width=64 align=right 
    border=0></TD></TR></TBODY></TABLE>
<H1 align=center>Qt教程一 —— 第十一章:悬在空中的砖</H1>
<P>
<CENTER><IMG alt="Screenshot of tutorial twelve" 
src="Qt教程一 —— 第十一章:悬在空中的砖.files/t12.png"></CENTER>
<P>在这个例子中,我们扩展我们的LCDRange类来包含一个文本标签。我们也会给射击提供一个目标。 
<P>
<UL>
  <LI><A 
  href="http://www.qtopia.org.cn/doc/qiliang.net/qt/t12-lcdrange-h.html">t12/lcdrange.h</A>包含LCDRange类定义。 

  <LI><A 
  href="http://www.qtopia.org.cn/doc/qiliang.net/qt/t12-lcdrange-cpp.html">t12/lcdrange.cpp</A>包含LCDRange类实现。 

  <LI><A 
  href="http://www.qtopia.org.cn/doc/qiliang.net/qt/t12-cannon-h.html">t12/cannon.h</A>包含CannonField类定义。 

  <LI><A 
  href="http://www.qtopia.org.cn/doc/qiliang.net/qt/t12-cannon-cpp.html">t12/cannon.cpp</A>包含CannonField类实现。 

  <LI><A 
  href="http://www.qtopia.org.cn/doc/qiliang.net/qt/t12-main-cpp.html">t12/main.cpp</A>包含MyWidget和main。 
  </LI></UL>
<P>
<H2>一行一行地解说 </H2><A name=1></A>
<P>
<H3><A 
href="http://www.qtopia.org.cn/doc/qiliang.net/qt/t12-lcdrange-h.html">t12/lcdrange.h</A> 
</H3><A name=1-1></A>
<P>LCDRange现在有了一个文本标签。 
<P>
<P><PRE>    class QLabel;
</PRE>
<P>我们名称声明<A 
href="http://www.qtopia.org.cn/doc/qiliang.net/qt/qlabel.html">QLabel</A>,因为我们将在这个类声明中使用一个QLabel的指针。 

<P><PRE>    class LCDRange : public <A href="http://www.qtopia.org.cn/doc/qiliang.net/qt/qvbox.html">QVBox</A>
    {
        <A href="http://www.qtopia.org.cn/doc/qiliang.net/qt/metaobjects.html#Q_OBJECT">Q_OBJECT</A>
    public:
        LCDRange( <A href="http://www.qtopia.org.cn/doc/qiliang.net/qt/qwidget.html">QWidget</A> *parent=0, const char *name=0 );
        LCDRange( const char *s, QWidget *parent=0,
                  const char *name=0 );
</PRE>
<P>我们添加了一个新的构造函数,这个构造函数在父对象和名称之外还设置了标签文本。 
<P><PRE>        const char *text()  const;
</PRE>
<P>这个函数返回标签文本。 
<P><PRE>        void setText( const char * );
</PRE>
<P>这个槽设置标签文本。 
<P><PRE>    private:
        void init();
</PRE>
<P>因为我们现在有了两个构造函数,我们选择把通常的初始化放在一个私有的init()函数。 
<P><PRE>        <A href="http://www.qtopia.org.cn/doc/qiliang.net/qt/qlabel.html">QLabel</A>      *label;
</PRE>
<P>我们还有一个新的私有变量:一个QLabel。QLabel是一个Qt标准窗口部件并且可以显示一个有或者没有框架的文本或者pixmap。 
<P>
<H3><A 
href="http://www.qtopia.org.cn/doc/qiliang.net/qt/t12-lcdrange-cpp.html">t12/lcdrange.cpp</A> 
</H3><A name=1-2></A>
<P>
<P><PRE>    #include &lt;<A href="http://www.qtopia.org.cn/doc/qiliang.net/qt/qlabel-h.html">qlabel.h</A>&gt;
</PRE>
<P>这里我们包含了<A 
href="http://www.qtopia.org.cn/doc/qiliang.net/qt/qlabel.html">QLabel</A>类定义。 
<P><PRE>    LCDRange::LCDRange( <A href="http://www.qtopia.org.cn/doc/qiliang.net/qt/qwidget.html">QWidget</A> *parent, const char *name )
            : <A href="http://www.qtopia.org.cn/doc/qiliang.net/qt/qvbox.html">QVBox</A>( parent, name )
    {
        init();
    }
</PRE>
<P>这个构造函数调用了init()函数,它包括了通常的初始化代码。 
<P><PRE>    LCDRange::LCDRange( const char *s, QWidget *parent,
                        const char *name )
            : <A href="http://www.qtopia.org.cn/doc/qiliang.net/qt/qvbox.html">QVBox</A>( parent, name )
    {
        init();
        setText( s );
    }
</PRE>
<P>这个构造函数首先调用了init()然后设置标签文本。 
<P><PRE>    void LCDRange::init()
    {
        <A href="http://www.qtopia.org.cn/doc/qiliang.net/qt/qlcdnumber.html">QLCDNumber</A> *lcd  = new <A href="http://www.qtopia.org.cn/doc/qiliang.net/qt/qlcdnumber.html">QLCDNumber</A>( 2, this, "lcd"  );
        slider = new <A href="http://www.qtopia.org.cn/doc/qiliang.net/qt/qslider.html">QSlider</A>( Horizontal, this, "slider" );
    <A name=x2319></A>    slider-&gt;<A href="http://www.qtopia.org.cn/doc/qiliang.net/qt/qrangecontrol.html#setRange">setRange</A>( 0, 99 );
    <A name=x2320></A>    slider-&gt;<A href="http://www.qtopia.org.cn/doc/qiliang.net/qt/qslider.html#setValue">setValue</A>( 0 );

        label = new <A href="http://www.qtopia.org.cn/doc/qiliang.net/qt/qlabel.html">QLabel</A>( " ", this, "label"  );
    <A name=x2315></A>    label-&gt;<A href="http://www.qtopia.org.cn/doc/qiliang.net/qt/qlabel.html#setAlignment">setAlignment</A>( AlignCenter );

    <A name=x2321></A>    <A href="http://www.qtopia.org.cn/doc/qiliang.net/qt/qobject.html#connect">connect</A>( slider, SIGNAL(<A href="http://www.qtopia.org.cn/doc/qiliang.net/qt/qslider.html#valueChanged">valueChanged</A>(int)),
    <A name=x2318></A>             lcd, SLOT(<A href="http://www.qtopia.org.cn/doc/qiliang.net/qt/qlcdnumber.html#display">display</A>(int)) );
        <A href="http://www.qtopia.org.cn/doc/qiliang.net/qt/qobject.html#connect">connect</A>( slider, SIGNAL(<A href="http://www.qtopia.org.cn/doc/qiliang.net/qt/qslider.html#valueChanged">valueChanged</A>(int)),
                 SIGNAL(valueChanged(int)) );

        <A href="http://www.qtopia.org.cn/doc/qiliang.net/qt/qwidget.html#setFocusProxy">setFocusProxy</A>( slider );
    }
</PRE>
<P><TT>lcd</TT>和<TT>slider</TT>的设置和上一章一样。接下来我们创建一个<A 
href="http://www.qtopia.org.cn/doc/qiliang.net/qt/qlabel.html">QLabel</A>并且让它的内容中间对齐(垂直方向和水平方向都是)。connect()语句也来自于上一章。 

<P><PRE>    const char *LCDRange::text() const
    {
    <A name=x2317></A>    return label-&gt;<A href="http://www.qtopia.org.cn/doc/qiliang.net/qt/qlabel.html#text">text</A>();
    }
</PRE>
<P>这个函数返回标签文本。 
<P><PRE>    void LCDRange::setText( const char *s )
    {
    <A name=x2316></A>    label-&gt;<A href="http://www.qtopia.org.cn/doc/qiliang.net/qt/qlabel.html#setText">setText</A>( s );
    }
</PRE>
<P>这个函数设置标签文本。 
<P>
<H3><A 
href="http://www.qtopia.org.cn/doc/qiliang.net/qt/t12-cannon-h.html">t12/cannon.h</A> 
</H3><A name=1-3></A>
<P>CannonField现在有两个新的信号:hit()和missed()。另外它还包含一个目标。 
<P>
<P><PRE>        void  newTarget();
</PRE>
<P>这个槽在新的位置生成一个新的目标。 
<P><PRE>    signals:

⌨️ 快捷键说明

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