📄 qobject.html
字号:
<h3 class=fn><a href="qvariant.html">QVariant</a> <a name="property"></a>QObject::property ( const char * name ) const<tt> [虚]</tt>
</h3>
返回对象的<em>name</em>属性的值。
<p> 如果没有这样一个属性存在,返回变量是无效的。
<p> 关于所有可用属性的信息通过<a href="#metaObject">metaObject</a>()提供。
<p> <p>也可以参考<a href="#setProperty">setProperty</a>()、<a href="qvariant.html#isValid">QVariant::isValid</a>()、<a href="#metaObject">metaObject</a>()、<a href="qmetaobject.html#propertyNames">QMetaObject::propertyNames</a>()和<a href="qmetaobject.html#property">QMetaObject::property</a>()。
<h3 class=fn><a href="qobjectlist.html">QObjectList</a> * <a name="queryList"></a>QObject::queryList ( const char * inheritsClass = 0, const char * objName = 0, bool regexpMatch = TRUE, bool recursiveSearch = TRUE ) const
</h3>
搜索这个对象的子对象和任意的子孙对象,并且返回继承<em>inheritsClass</em>的名称为<em>objName</em>的对象的列表。如果<em>inheritsClass</em>为0(默认),任何类都可以匹配。如果<em>objName</em>为0(默认),所有的对象名称都可以匹配。
<p> 如果<em>regexpMatch</em>为真(默认),<em>objName</em>是一个对象名称必须匹配的<a href="qregexp.html#regular-expression">正则表达式</a>。语法规则就是<a href="qregexp.html">QRegExp</a>。如果<em>regexpMatch</em>为假,<em>objName</em>就是对象名称必须正确匹配的字符串。
<p> 注意<em>inheritsClass</em>使用从QObject的单继承,方式和<a href="#inherits">inherits</a>()中的一样。根据inherits(),<a href="qmenubar.html">QMenuBar</a>继承了<a href="qwidget.html">QWidget</a>,而不是<a href="qmenudata.html">QMenuData</a>。这样也许和真是情况不太一致,但是这是使Qt能够支持更多种类编译器的最好方法。
<p> 最后,如果<em>recursiveSearch</em>为真(默认),<a href="#queryList">queryList</a>()就像第一代子对象那样搜索<em>n</em>代子孙对象。
<p> 如果所有这些看起来都比你需要的要复杂,更简单的函数<a href="#child">child</a>()也许是你想要的。
<p> 这里是一个人为的实例来使这个窗口中的所有按钮失效:
<pre>
<a href="qobjectlist.html">QObjectList</a> *l = topLevelWidget()->queryList( "QButton" );
<a href="qobjectlistit.html">QObjectListIt</a> it( *l ); // 遍历按钮
QObject *obj;
while ( (obj = it.<a href="qptrlistiterator.html#current">current</a>()) != 0 ) {
// 对于每一个找到的对象……
++it;
((QButton*)obj)->setEnabled( FALSE );
}
delete l; // 删除这个列表,而不是对象
</pre>
<p> <a href="qobjectlist.html">QObjectList</a>类在<a href="qobjectlist-h.html">qobjectlist.h</a>头文件中被定义。
<p> <b>警告:</b>你使用这个列表完成之后,就删除它。这个列表中包含的指针也许会在任何你不注意的时候失效(例如,一旦用户关闭一个窗口,你也许就得到了一个摇摆的指针)。
<p> <p>也可以参考<a href="#child">child</a>()、<a href="#children">children</a>()、<a href="#parent">parent</a>()、<a href="#inherits">inherits</a>()、<a href="#name-prop">name</a>和<a href="qregexp.html">QRegExp</a>。
<h3 class=fn>void <a name="removeChild"></a>QObject::removeChild ( <a href="qobject.html">QObject</a> * obj )<tt> [虚]</tt>
</h3>
从子对象列表中移除<em>obj</em>对象。
<p> <b>警告:</b>这个函数将不会从屏幕上移除一个子窗口部件。它仅仅是从父窗口部件的子对象列表中移除它。
<p> <p>也可以参考<a href="#insertChild">insertChild</a>()和<a href="qwidget.html#reparent">QWidget::reparent</a>()。
<h3 class=fn>void <a name="removeEventFilter"></a>QObject::removeEventFilter ( const <a href="qobject.html">QObject</a> * obj )
</h3>
从这个对象中移除事件过滤器对象<em>obj</em>。如果事件过滤器没有被安装,这个要求将被忽略。
<p> 当这个对象被销毁时,这个对象的所有事件过滤器都会自动地被移除。
<p> 移除事件过滤器总是安全的,甚至在事件过滤器被激活期间(比如,从<a href="#eventFilter">eventFilter</a>()函数中)。
<p> <p>也可以参考<a href="#installEventFilter">installEventFilter</a>()、<a href="#eventFilter">eventFilter</a>()和<a href="#event">event</a>()。
<h3 class=fn>const <a href="qobject.html">QObject</a> * <a name="sender"></a>QObject::sender ()<tt> [保护]</tt>
</h3>
如果在任何函数调用或信号发射之前在槽中调用的话,返回发送消息的对象的指针。在所有其它情况下,返回未定义的值。
<p> <b>警告:</b>在其它一些情况下,这个函数也会返回一些显然正确的东西。无论如何,在任何函数调用期间,它的值可能发生变化,取决于这次调用中什么信号—槽连接被激活。在Qt 3.0中这个值的变化要比2.x下多得多。
<p> <b>警告:</b>这个函数违反了模块的面相对象的原则。不管如何,当许多信号连接到一个单一的槽上的时候,获得访问的发送者也许很有用处。如果槽是被做为普通C++函数调用的话,发送者是未定义的。
<h3 class=fn>void <a name="setName"></a>QObject::setName ( const char * name )<tt> [虚]</tt>
</h3>
设置对象的名称为<em>name</em>。
<h3 class=fn>bool <a name="setProperty"></a>QObject::setProperty ( const char * name, const <a href="qvariant.html">QVariant</a> & value )<tt> [虚]</tt>
</h3>
设置对象的<em>name</em>属性值为<em>value</em>。
<p> 如果操作成功,返回真,否则返回假。
<p> 关于所有可用属性的信息通过<a href="#metaObject">metaObject</a>()提供。
<p> <p>也可以参考<a href="#property">property</a>()、<a href="#metaObject">metaObject</a>()、<a href="qmetaobject.html#propertyNames">QMetaObject::propertyNames</a>()和<a href="qmetaobject.html#property">QMetaObject::property</a>()。
<h3 class=fn>bool <a name="signalsBlocked"></a>QObject::signalsBlocked () const
</h3>
<p> 如果信号被阻塞,返回真,否则返回假。
<p> 默认情况下,信号不被阻塞。
<p> <p>也可以参考<a href="#blockSignals">blockSignals</a>()。
<h3 class=fn>int <a name="startTimer"></a>QObject::startTimer ( int interval )
</h3>
定时器开始计时并且返回一个定时器标识符,或者如果不能开始计时,返回0。
<p> 每<em>interval</em>毫秒出现一个定时器事件直到<a href="#killTimer">killTimer</a>()或<a href="#killTimers">killTimers</a>()被调用。如果<em>interval</em>为0,那么定时器事件将在每次没有窗口系统事件要处理的情况下出现。
<p> 当定时器事件发生时,虚函数<a href="#timerEvent">timerEvent</a>()被调用为<a href="qtimerevent.html">QTimerEvent</a>事件参数类。重新实现这个函数可以获得定时器事件。
<p> 如果多个定时器在运行,<a href="qtimerevent.html#timerId">QTimerEvent::timerId</a>()可以用来找到那个定时器被激活。
<p> 实例:
<pre>
class MyObject : public QObject
{
Q_OBJECT
public:
MyObject( QObject *parent = 0, const char *name = 0 );
protected:
void timerEvent( <a href="qtimerevent.html">QTimerEvent</a> * );
};
MyObject::MyObject( QObject *parent, const char *name )
: QObject( parent, name )
{
<a href="#startTimer">startTimer</a>( 50 ); // 50微妙定时器
<a href="#startTimer">startTimer</a>( 1000 ); // 1秒定时器
<a href="#startTimer">startTimer</a>( 60000 ); // 1分钟定时器
}
void MyObject::<a href="#timerEvent">timerEvent</a>( <a href="qtimerevent.html">QTimerEvent</a> *e )
{
<a href="qapplication.html#qDebug">qDebug</a>( "timer event, id %d", e-><a href="qtimerevent.html#timerId">timerId</a>() );
}
</pre>
<p> 实际上没有间隔值的上限(超过1年也可以)。注意<a href="qtimer.html">QTimer</a>的精确度依赖与底下的操作系统和硬件。绝大多数平台都支持20毫秒的精确度,一些平台可以提供更精确的。如果Qt不能发送定时器滴答所要求的数量,它将会默默地丢弃一些。
<p> QTimer类提供了单触发定时器和替代事件的定时器信号的高级编程接口。
<p> <p>也可以参考<a href="#timerEvent">timerEvent</a>()、<a href="#killTimer">killTimer</a>()和<a href="#killTimers">killTimers</a>()。
<h3 class=fn>void <a name="timerEvent"></a>QObject::timerEvent ( <a href="qtimerevent.html">QTimerEvent</a> * )<tt> [虚 保护]</tt>
</h3>
这个信号处理者可以在子类中重新实现而接收对象的定时器事件。
<p> <a href="qtimer.html">QTimer</a>提供了定时器功能的高级接口,并且提供了关于定时器的更多说明。
<p> <p>也可以参考<a href="#startTimer">startTimer</a>()、<a href="#killTimer">killTimer</a>()、<a href="#killTimers">killTimers</a>()和<a href="#event">event</a>()。
<p>实例:<a href="biff-example.html#x1945">biff/biff.cpp</a>、<a href="dclock-example.html#x902">dclock/dclock.cpp</a>、<a href="forever-example.html#x794">forever/forever.cpp</a>、<a href="grapher-nsplugin-example.html#x2763">grapher/grapher.cpp</a>、<a href="qmag-example.html#x1634">qmag/qmag.cpp</a>和<a href="xform-example.html#x1431">xform/xform.cpp</a>。
<h3 class=fn><a href="qstring.html">QString</a> <a name="tr"></a>QObject::tr ( const char * sourceText, const char * comment ) const
</h3>
<p> 返回<em>sourceText</em>的翻译版本,或者如果没有合适的版本返回<em>sourceText</em>它自己。翻译上下文是<em>comment</em>的QObject(默认为空)。所有使用<a href="metaobjects.html#Q_OBJECT">Q_OBJECT</a>宏的QObject对象有这个函数的重新实现,把子类名作为上下文。
<p> <p>也可以参考<a href="#trUtf8">trUtf8</a>()、<a href="qapplication.html#translate">QApplication::translate</a>()和<a href="i18n.html">Qt中的国际化</a>。
<p>实例:<a href="qdialog.html#x2100">network/networkprotocol/view.cpp</a>。
<h3 class=fn><a href="qstring.html">QString</a> <a name="trUtf8"></a>QObject::trUtf8 ( const char * sourceText, const char * comment ) const
</h3>
<p> 返回<em>sourceText</em>的翻译版本,或者如果没有合适的版本返回<a href="qstring.html#fromUtf8">QString::fromUtf8</a>(<em>sourceText</em>)。它是另一种<a href="#tr">tr</a>(<em>sourceText</em>, <em>comment</em>)。
<p> <p>也可以参考<a href="#tr">tr</a>()和<a href="qapplication.html#translate">QApplication::translate</a>()。
<hr><h2>属性文档</h2>
<h3 class=fn><a href="qcstring.html">QCString</a> <a name="name-prop"></a>name</h3>
<p>这个属性保存的是这个对象的名称。
<p>你可以通过名称(和类型)使用<a href="#child">child</a>()来找到一个对象。你可以通过<a href="#queryList">queryList</a>()来找到一系列对象。
<p> 对象名称可以通过构造函数或者<a href="#setName">setName</a>()函数设置。对象名称在当前版本的Qt中不是非常有用,但是将在未来变得越来越重要。
<p> 如果对象没有名称,<a href="#name">name</a>()函数返回“unnamed”,所以printf()(在<a href="qapplication.html#qDebug">qDebug</a>()中被使用)将不会被请求输出一个空指针。如果你希望没有名称的对象返回空指针,你可以调用name( 0 )。
<p> <pre>
<a href="qapplication.html#qDebug">qDebug</a>( "MyClass::setPrecision(): (%s) invalid precision %f",
<a href="#name">name</a>(), newPrecision );
</pre>
<p> <p>也可以参考<a href="#className">className</a>()、<a href="#child">child</a>()和<a href="#queryList">queryList</a>()。
<p>通过<a href="#setName">setName</a>()可以设置属性值并且通过<a href="#name">name</a>()来获得属性值。
<hr><h2>相关函数</h2>
<h3 class=fn>void * <a name="qt_find_obj_child"></a>qt_find_obj_child ( <a href="qobject.html">QObject</a> * parent, const char * type, const char * name )
</h3>
<p> 返回一个继承了<em>parent</em>对象类型为<em>type</em>的名为<em>name</em>的对象的指针。
<p> 如果没有这样的对象,返回0。
<p> <pre>
<a href="qlistbox.html">QListBox</a> *c = (QListBox *) <a href="#qt_find_obj_child">qt_find_obj_child</a>( myWidget, "QListBox",
"my list box" );
if ( c )
c-><a href="qlistbox.html#insertItem">insertItem</a>( "another string" );
</pre>
<!-- eof -->
<hr><p>
这个文件是<a href="index.html">Qt工具包</a>一部分。
版权所有 © 1995-2002
<a href="http://www.trolltech.com/">Trolltech</a>。保留所有权利。
<p><address><hr><div align=center>
<table width=100% cellspacing=0 border=0><tr>
<td>Copyright © 2002
<a href="http://www.trolltech.com">Trolltech</a>
<td><a href="http://www.trolltech.com/trademarks.html">Trademarks</a>
<td><a href="zh_CN.html">译者:Cavendish</a>
<td align=right><div align=right>Qt 3.0.5版</div>
</table></div></address></body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -