Category Archives: Qt

Qt programming language for a lot of platforms

Mac 与 IP 修改器

因为经常要在不同的地点更换 mac 和 ip,所以就自己动手写了这个小工具。主要功能: 不重启计算机修改 mac。 修改网络地址参数,比如 ip、子网掩码、网关和 DNS。 也可以将上述参数通过 DHCP 来获取。 保存和读取配置,方便在不同地点调用不同的配置。 截图如下: 这个小工具是用 Qt 4.6.3 写成的,修改 mac 是通过更改注册表来完成的,之后调用 windows api 来实现网卡重启,这个是参考别人的代码。地址的修改是通过 netsh 命令完成的,工具开源,所以有兴趣的同学请给予指导,项目地址:http://code.google.com/p/klniu/ 因为库文件比较大,所以工具整体比较大,有两个版本,一个是动态链接版本,包含多个动态链接库。另一个是静态链接,是一个单文件,请大家自行选择使用。下载地址: 动态链接版本:http://klniu.googlecode.com/files/macmanager_1.0_dynamic.7z 静态链接版本:http://klniu.googlecode.com/files/macmanager_1.0_static.7z 源代码:http://klniu.googlecode.com/files/macmanager_1.0_src.7z

Posted in Qt, 原创, 软件 | Tagged , , | Leave a comment

QNetworkInterface 类

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(); … Continue reading

Posted in Qt, 原创 | Tagged , | Leave a comment

QWizard下一步按钮的控制

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 & … Continue reading

Posted in Qt, 原创 | Tagged , , , | Leave a comment

QString, wchar_t *, TCHAR, CString和其他字符或字符串类型的转换

这篇文章是在Blogspot上看到的一篇文章,能够解决QString, wchar_t *, TCHAR和其他字符或字符串类型之间的转换,方便在使用Windows API的时候转换的麻烦。 原文地址:http://tkrotoff.blogspot.com/2010/04/code-snippets-about-qstring-wchart.html //QString to wchar_t *: const wchar_t * encodedName = reinterpret_cast<const wchar_t *>(fileName.utf16()); //QString to char * given a file name: QByteArray fileName = QFile::encodeName(aFileName); const char * encodedName = fileName.constData(); //Valid as long as … Continue reading

Posted in Qt, 转载 | Tagged , , , | Leave a comment

Qt中addStretch的有趣应用

今天在使用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份,然后按照您所规定的地方分配弹簧,于是布局起来就方便多了,以前没有发现这个,一直还为布局头疼呢,现在有点门路了。

Posted in Qt, 原创 | Tagged , | Leave a comment