vs2008中添加QT并设置代码自动补全

本文介绍如何在Microsoft Visual Studio 2008中集成QT库,并提供了详细的安装步骤。此外,还介绍了如何使用VassistX实现QT代码的自动补全功能。

【1】QT编程——QT集成于Microsoft Visual Studio

集成于VSQT安装步骤:

      1.首先安装Microsoft Visual Studio 2008(因为QT官网上好像没有提供VS其他版本的QT库,所以如果你装的不是VS2008,把他的QT库装上也没用)

      2.在官网下载qt-win-opensource-4.7.0-vs2008(官方网址:http://qt.nokia.com/products/),进行安装

      3.在官网下载qt-vs-addin-1.1.6进行安装(不要忘记这个,我刚开始只装了上面两个发现QT并没有关联到VS中去,而这个插件却没有包括在上一个软件里,这是挺让人郁闷的, 大家一定要在官网上找到相关的这两个软件)

    集成了QTVS不同于一般的VS有两点, 一、VS的菜单栏多了“Qt”,这个菜单主要是关于Qt的一些操作,VS中新建项目时增加了QT的相关项。二、VS右侧的工程解决方案中WinForm的设计不是在VS中进行,而是点击"....ui"文件后会单独弹出一个Qt界面设计器,这个界面设计器类似于VS工具箱,但功能要比VS强大的多,感觉更像 Delphi

   通过上述步骤后,软件算是完全安装成功,通过样例测试和自己编写的小程序都能够正确运行


【2】VS代码自动补全

步骤:

   1.如果需要QT的代码自动补全功能的话可以在网上下一个VassistX的破解版,然后解压安装,注意要将解压后目录下的VA_X.dll替换到VassistX的安装目录下的同名文件即可,不然会死一个拥有试用期的软件,很麻烦

做好这一切之后,重启vs,界面上就会多出QT、VassistX两项,依次配置好这两项的options选项即可


### 实现 Qt 自动补全功能 #### QLineEdit 的自动补全 对于 `QLineEdit` 控件,可以利用 `QCompleter` 类来实现自动补全功能。具体来说,在设置好 `QLineEdit` 后,可以通过创建一个 `QStringListModel` 来存储可能的补全项列表,将其作为模型传递给 `QCompleter` 对象。之后再把此对象关联到对应的 `QLineEdit` 上即可。 ```python from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QLineEdit from PyQt5.QtCore import QStringListModel import sys class LineEditAutoComplete(QWidget): def __init__(self): super().__init__() layout = QVBoxLayout(self) line_edit = QLineEdit() completer = QCompleter() # 创建补全器实例 model = QStringListModel(['hello', 'world', 'qt']) # 定义数据源 completer.setModel(model) # 将模型赋值给补全器 line_edit.setCompleter(completer) # 绑定补全器至输入框 layout.addWidget(line_edit) if __name__ == '__main__': app = QApplication(sys.argv) window = LineEditAutoComplete() window.show() sys.exit(app.exec_()) ``` 这段代码展示了如何为 `QLineEdit` 添加基本的文字提示功能[^4]。 #### QTextEdit 的自动补全 针对多行文本编辑控件 `QTextEdit` ,同样也可以借助于 `QCompleter` 。不过由于 `QTextEdit` 不直接支持该特性,因此需要自定义事件过滤器或者重载某些方法以便能够响应特定按键组合触发补全过程。以下是简化版的例子: ```python from PyQt5.QtGui import QTextCursor from PyQt5.QtWidgets import QTextEdit, QCompleter, QPlainTextDocumentLayout class TextEditWithAutocomplete(QTextEdit): def __init__(self, parent=None): super(TextEditWithAutocomplete, self).__init__(parent=parent) self.completer = None self.setFocusPolicy(Qt.StrongFocus) def set_completer(self, c): if self.completer is not None: self.disconnect(self.completer, 0, self, 0) if c is not None: c.setWidget(self) c.setCompletionMode(QCompleter.PopupCompletion) c.highlighted.connect(self.insert_completion) self.completer = c def insert_completion(self, completion): tc = self.textCursor() extra = (len(completion) - len(self.completer.completionPrefix())) tc.movePosition(QTextCursor.Left) tc.movePosition(QTextCursor.EndOfWord) tc.insertText(completion[-extra:]) self.setTextCursor(tc) def text_under_cursor(self): tc = self.textCursor() tc.select(QTextCursor.WordUnderCursor) return tc.selectedText() def main(): words = ['apple', 'application', 'app'] te = TextEditWithAutocomplete() comp = QCompleter(words) te.set_completer(comp) te.show() if __name__ == "__main__": from PyQt5.QtWidgets import QApplication import sys qApp = QApplication(sys.argv) main() sys.exit(qApp.exec_()) ``` 上述程序片段说明了怎样让 `QTextEdit` 支持关键词级别的智能感知与建议机制[^3]。 #### 补全模式的选择 值得注意的是,`QCompleter` 提供了几种不同的补全方式可以选择: - **PopupCompletion**: 默认选项;当用户按下 Tab 键或其他指定热键时弹出候选词窗口。 - **InlineCompletion**: 当匹配成功后立即将选中的条目插入当前光标处而不打开下拉菜单。 - **UnfilteredPopupCompletion**: 不论是否有足够的字符用于筛选都会立即展示全部可用提议列表。 这些配置可通过调用 `setCompletionMode()` 方法来进行调整。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值