QNetworkInterface 是一个管理网络连接的类,利用他可以枚举本机的网络连接并获取其属性。比较常用的函数有: QList<QNetworkAddressEntry> QNetworkInterface::addressEntries() 获取地址列表,应用如下: //原型 QList<QNetworkAddressEntry> QNetworkInterface::addressEntries () const //比如获取本地所有 ip 和 netmask //allInterfaces() 是一个静态函数,用于获取本机所以连接。 QList<QNetworkInterface> networkInterface = QNetworkInterface::allInterfaces(); for (QList<QNetworkInterface>::const_iterator i = networkInterface.const_Begin(); i != networkInterface.const_End(); ++i) { //获取连接地址列表 QList<QNetworkAddressEntry> addressEntriesList = (*i).addressEntries(); for (QList<QNetworkAddressEntry>::const_iterator j = addressEntriesList.constBegin(); j != addressEntriesList.constEnd(); ++j) { //输出 ip qDebug() << (*i).ip().toString(); //输出 netmask qDebug() << (*i).ip().toString();
more…
QWizard是Qt的向导类,在向导过程中,可以通过函数registerField注册字段实现全局访问,而且可以通过4种方法来控制下一步或者完成按钮的可用性: 第一种方法,isComplete函数,其应用于QWizardPage,可控制单个向导页面的“下一步”或者“完成”按钮的可用性,函数如下: bool QWizardPage::isComplete () const[virtual] 下面是isComplete的实现,源码来源于 http://doc.qt.nokia.com/qq/qq22-qwizard.html#validatebeforeitstoolate 首先重新实现QWizardPage::isComplete()函数 bool SailingPage::isComplete() const { return field("sailing").toDate().dayOfWeek() != Qt::Sunday; } 连接输入框或者其他需要监视的对象的信号与QWizardPage::completeChanged ()信号。 connect(sailing, SIGNAL(selectionChanged()), this, SIGNAL(completeChanged())); 当然也可以自己执行QWizardPage::completeChanged ()信号,即自行编写完成检查函数后执行信号: emit completeChanged() 第二种方法,hasAcceptableInput函数,用于QLineEdit,如果hasAcceptableInput为false,则按钮会变灰。 bool hasAcceptableInput () const 第三种方法,registerField函数,第一个参数name后加星号,例如field*,就可以保证如果此区域不填写,下一步按钮将始处于灰色状态。 void QWizardPage::registerField ( const QString & name, QWidget * widget, const char * property = 0, const char * changedSignal =
more…
今天在使用addStretch,布局的时候,发现addStretch竟然是可以平均分配的,有意思。比如: QVBoxLayout *buttonLayout = new QVBoxLayout; buttonLayout->addStretch(1); buttonLayout->addWidget(Button1); buttonLayout->addStretch(1); buttonLayout->addWidget(Button2); buttonLayout->addStretch(1); buttonLayout->addWidget(Button3); buttonLayout->addStretch(6); 您会发现,buttonLayout的布局将空白没有widget的地方分成了9份,然后按照您所规定的地方分配弹簧,于是布局起来就方便多了,以前没有发现这个,一直还为布局头疼呢,现在有点门路了。