修改手机BP(比如烧号)必备的VSP(Virtual Serial Port)虚拟串口软件

  • HW VSP3 - Virtual Serial Port

http://www.hw-group.com/products/hw_vsp/index_en.html

 

  • VSPM (国产软件哦)

http://www.powerip.net/product_VSPM.htm

 

下面转一篇文件,里面提及到如何使用VSP软件来修改手机BP。

||||||||

||||||||

||||||||

||||||||

vvvvvv

 

如何修改美版3G XOOM软改CDMA插卡上3G令短信收发正常!

这编文章就会教给大家一些简单而实用的教程..希望大家有机会测试一下..

1106052251037261dda36999ce.jpg

1106052252a5bfdb6f1e0a54e3.jpg

11060523016000a1e3e3c70655.jpg

1106061146d030cdb6a8742474.jpg    11060612073b34b042e6cd7189.jpg

短信收发正常,电话试了可以打通,但是无法说话和听到对方说话。

结合XOOM的写号教程一起比较容易点
XOOM先进DIAG模式(同时按 音量+ 、音量- 、再按住电源键重启进入DIAG),连接HW Virtual Serial Port,然后按照教程的方法用QPST修改就行了,做完以上的还只能上cdma1x。需要用sim写卡器改写prl为212就可以上3G了。
HW软件 的设置如图所示

11060613149f4f919efd584b27.jpg

点击login后设置如图所示,设置好后点击create com,连接正确后 status里会显示connected

11060613147f77a8b5cb5387e0.jpg

使用qpst连接XOOM修改,参数如图

7.jpg

选择service programming

8.jpg

点击read from phone,出来的000000对话框是spc密码,直接确定就行了。

9.jpg

修改下面2图里面的参数如图所示,然后点击write to phone

10.jpg

11.jpg

重新启动后修改system/etc/ppp/peers 里面的pppd-ril.options里面的拨号:user ctnet@mycdma.cn password vnet.mobi

12.jpg

1.jpg

下载 (33.95 KB)
2011-6-6 16:06



插卡后可直接上1X网络,修改prl后可以上3G了!

<think>好的,我现在需要帮助用户了解如何在Qt中让窗口居中显示。首先,我得回忆一下Qt的相关知识,特别是关于窗口位置和大小的部分。 用户可能已经知道如何创建一个基本的窗口,但需要调整窗口的位置到屏幕中央。我应该先考虑获取屏幕的尺寸和窗口的尺寸,然后计算合适的坐标。 Qt中的QWidget有方法screen()可以获取窗口所在的屏幕,尤其是在多显示器的情况下,这很重要。使用QScreen的geometry()方法可以获取屏幕的尺寸和位置。 接下来,窗口自身的尺寸可以通过size()获得,但需要转换成QSize类型。然后计算居中的位置,也就是屏幕的宽度减去窗口宽度除以2,高度同理。 不过,可能还需要考虑窗口管理器的影响,比如有些系统会自动调整位置。这时候直接调用QWidget的move()方法可能不够,或者需要在窗口显示之后调整位置? 对了,Qt有一个现成的方法QWidget::setGeometry(),但设置居中可能需要手动计算。或者有没有更简单的方法?比如使用QDesktopWidget,不过Qt5之后是否被废弃了? 查一下文档,发现QDesktopWidget在Qt5中被标记为过时,推荐使用QScreen来代替。因此,应该通过窗口的screen()方法来获取屏幕信息。 另外,窗口在显示之前可能无法获取正确的尺寸,所以最好在窗口显示之后再进行位置调整。比如在showEvent()事件中处理,或者在调用show()之后调用调整位置的函数。 不过用户可能希望代码简洁,所以可能希望在构造函数中设置。这时候需要确保窗口已经获得了正确的尺寸,或者强制调整尺寸,比如使用adjustSize()方法。 另外,Qt的窗口标志也可能影响位置,比如设置Qt::WindowStaysOnTopHint可能会改变窗口的位置,但用户的问题应该是一般情况下的居中。 总结步骤应该是: 1. 获取屏幕的几何信息。 2. 获取窗口的尺寸。 3. 计算左上角的坐标。 4. 移动窗口到该坐标。 另外,代码示例应该包括如何将这些步骤整合到Qt应用程序中。比如在MainWindow的构造函数中添加相关代码。 需要注意,当屏幕有多个显示器时,Qt可能会根据窗口的显示位置选择对应的屏幕,所以需要确认获取的是主屏幕还是当前屏幕。不过默认情况下,使用主屏幕可能更合适,或者使用应用程序所在的屏幕。 例如: 在MainWindow构造函数里: ```cpp MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { // 其他初始化代码... // 调整窗口位置到屏幕中心 QScreen *screen = QGuiApplication::primaryScreen(); QRect screenGeometry = screen->geometry(); int x = (screenGeometry.width() - this->width()) / 2; int y = (screenGeometry.height() - this->height()) / 2; this->move(x, y); } ``` 不过,这时候窗口的尺寸可能还没有正确计算,尤其是在没有显示之前。例如,如果窗口的内容依赖于布局,可能在构造时窗口的尺寸是默认值,而不是实际显示后的尺寸。这时候直接使用this->width()和height()可能不准确。 解决方法可能是调用adjustSize()来调整窗口尺寸,或者在窗口显示之后再进行移动。或者在showEvent中处理: ```cpp void MainWindow::showEvent(QShowEvent *event) { QMainWindow::showEvent(event); QScreen *screen = QGuiApplication::primaryScreen(); QRect screenGeometry = screen->geometry(); int x = (screenGeometry.width() - this->width()) / 2; int y = (screenGeometry.height() - this->height()) / 2; this->move(x, y); } ``` 但这样每次显示窗口都会调整位置,可能不是最优的,但可以保证正确性。 另外,Qt是否提供了直接的方法?比如使用QWidget::setGeometry结合计算后的位置。或者使用QWidget::move到中心。 还有一种方法是使用QWidget::setGeometry直接设置: QRect rect = this->frameGeometry(); rect.moveCenter(screenGeometry.center()); this->move(rect.topLeft()); 这可能更简洁,因为frameGeometry包含了窗口的框架(包括标题栏等),所以使用moveCenter会更准确,尤其是在不同平台可能有不同的窗口装饰。 是的,这样的方法可能更好,因为直接使用frameGeometry的中心点移动到屏幕中心,这样考虑了窗口的边框,确保窗口整体居中。 所以正确的步骤可能是: 1. 获取屏幕的几何信息。 2. 获取窗口的frameGeometry,并移动其中心到屏幕中心。 3. 移动窗口到计算后的位置。 代码示例: ```cpp MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { // 其他初始化代码... // 调整窗口位置到屏幕中心 QScreen *screen = QGuiApplication::primaryScreen(); QRect screenGeometry = screen->geometry(); QRect windowRect = this->frameGeometry(); windowRect.moveCenter(screenGeometry.center()); this->move(windowRect.topLeft()); } ``` 这样是否可行?需要测试,但理论上是可行的。此外,是否需要确保窗口已经显示?比如,在构造函数中调用时,窗口的frameGeometry可能还没有正确计算,特别是当窗口内容依赖于动态加载的内容时。 这时候可能需要延迟调整位置,比如在窗口显示之后。或者调用show()之后,再调整位置。 不过,用户可能希望代码尽可能简单,所以在构造函数中使用上述方法可能比较合适。或者可以在show()之后调用: ```cpp MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { // 其他初始化代码... // 在窗口显示后调整位置 QTimer::singleShot(0, this, &MainWindow::centerWindow); } void MainWindow::centerWindow() { QScreen *screen = QGuiApplication::primaryScreen(); QRect screenGeometry = screen->geometry(); QRect windowRect = this->frameGeometry(); windowRect.moveCenter(screenGeometry.center()); this->move(windowRect.topLeft()); } ``` 这样,在窗口显示后立即调整位置,确保窗口尺寸已经正确。 总结,可能的解决方案有两种: 1. 使用frameGeometry和moveCenter来移动窗口到屏幕中心。 2. 在窗口显示之后调整位置,以确保正确的尺寸。 需要向用户解释这两种方法,并给出示例代码,同时提醒可能的注意事项,比如多显示器环境下的处理,或者在窗口内容动态变化时可能需要重新调整位置。 另外,如果用户需要支持多显示器,可能需要根据当前窗口所在的屏幕来调整,而不仅仅是主屏幕。这时候可以使用QWidget::screen()方法获取当前窗口所在的屏幕,例如: QScreen *currentScreen = this->screen(); QRect screenGeometry = currentScreen->geometry(); 这样可以确保窗口居中在当前所在的屏幕,而不是主屏幕。 综上所述,应该分步骤解释如何实现窗口居中,并提供不同的方法,确保用户可以根据具体情况选择最合适的方案。</think>在Qt中实现窗口居中显示可以通过以下步骤完成: ### 方法1:在构造函数中直接设置 ```cpp MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { // 窗口初始化代码... // 获取主屏幕的几何信息 QScreen *screen = QGuiApplication::primaryScreen(); QRect screenGeometry = screen->geometry(); // 计算窗口居中坐标 int x = (screenGeometry.width() - this->width()) / 2; int y = (screenGeometry.height() - this->height()) / 2; // 移动窗口到屏幕中心 this->move(x, y); } ``` **注意**:此方法可能在窗口实际显示前无法正确获取尺寸(如动态加载内容时),需确保窗口尺寸已确定。 --- ### 方法2:使用窗口框架几何属性(推荐) 通过 `frameGeometry` 计算,可包含标题栏等装饰: ```cpp MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { // 窗口初始化代码... // 获取主屏幕中心点 QScreen *screen = QGuiApplication::primaryScreen(); QPoint center = screen->geometry().center(); // 将窗口框架中心对准屏幕中心 QRect rect = this->frameGeometry(); rect.moveCenter(center); this->move(rect.topLeft()); } ``` --- ### 方法3:延迟调整(适用于动态内容) 在窗口显示后立即调整位置: ```cpp MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { // 窗口初始化代码... // 通过单次定时器延迟调整 QTimer::singleShot(0, this, &MainWindow::centerWindow); } void MainWindow::centerWindow() { QScreen *screen = this->screen(); // 获取当前所在屏幕(多显示器适用) QRect screenGeometry = screen->geometry(); QRect rect = this->frameGeometry(); rect.moveCenter(screenGeometry.center()); this->move(rect.topLeft()); } ``` --- ### 关键点总结 1. **多显示器支持**: 使用 `this->screen()` 而非 `primaryScreen()`,确保窗口居中在当前所在的屏幕。 2. **窗口尺寸问题**: 若内容动态加载,需在窗口显示后调整位置(如方法3)。 3. **框架几何与普通几何**: `frameGeometry()` 包含窗口装饰(如标题栏),而 `geometry()` 仅含内容区域。通常使用 `frameGeometry` 更准确。 --- ### 扩展:Qt6的调整 Qt6中移除了 `QDesktopWidget`,推荐直接通过 `QScreen` 操作。若需兼容旧版本,可添加条件编译: ```cpp #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) QDesktopWidget *desktop = QApplication::desktop(); QRect screenGeometry = desktop->screenGeometry(this); #else QScreen *screen = this->screen(); QRect screenGeometry = screen->geometry(); #endif ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值