当前位置:首页>python>AI助手升级,超强Python/C++界面类生成工具CodeGenor局部更新!

AI助手升级,超强Python/C++界面类生成工具CodeGenor局部更新!

  • 2026-09-02 19:58:47
AI助手升级,超强Python/C++界面类生成工具CodeGenor局部更新!
📌 CodeGenor,一款快速生成Python(PySide/PyQt)、C++ UI界面的超强利器。CodeGenor之家网站:http://106.12.173.80/
许久未更,源于创作的道路上总是充满着思考与挑战,目前正在思考一些方案及其问题。粉丝朋友们放心,您的老朋友我一直都在!今天暂时先出AI智能助手部分的小更新吧!
通用智能助手更新
CodeGenor中智能助手第一版时仅仅能够一问一答,没有开启智能对话模式。这在一定程度上不够智能。另一方面,此智能助手未和CodeGenor本身产生一定的交集,显得些许孤立!于是开发了对应的功能,使得能够真正智能且和软件本身或者说代码本身产生关联。
  • 一问一答升级为对话模式。
  • 增加关联代码区选项。
对话模式没什么稀奇的,但却比较实用,你能够和AI持续聊天对话。
增加关联代码区选项将软件生成的代码能够被AI模块读取,以此为上下文来回答用户的提问。这样用户便可以在正式使用生成代码前使用AI将生成代码进行二次优化。对于我来说,我在内网进行开发工作,且进行MFC界面的设计,我在生成QT界面代码后我可以使用AI将现有的代码转为MFC代码。这样会方便很多,效率也有极大的提升!使用时进行勾选即可。
示例:
示例中转出的mfc代码未经验证,毕竟是AI,但基本是没什么问题的,如有问题还可继续调教,我们力求CodeGenor搞定Qt和Mfc。
相关对话资料
Qt代码
#pragma once#include<QMainWindow>#include<QVBoxLayout>#include<QComboBox>#include<QPushButton>#include<QLineEdit>#include"logindlg.h"#include"scoredetaildlg.h"class MainPage : public QMainWindow{  Q_OBJECTpublic:  explicitMainPage(QWidget * parent = nullptr); public:  voidinitUI();  voidinitSlots();signals:  voidsigTest(int, QString);private slots:  voidonIndexChanged(int param1);private:  QVBoxLayout *m_qvboxlayout_0;  QPushButton *m_btn_login;  QPushButton *m_btn_max;  QPushButton *m_btn_score;  QComboBox *m_qcombobox_0;  QLineEdit *m_qlineedit_1;  // 用户变量  LoginDlg* m_logdlg;  ScoreDetailDlg* m_scoredlg;  int m_count;};// Source code:#include"mainpage.h"#include<QtWidgets>MainPage::MainPage(QWidget * parent) : QMainWindow(parent), m_qvboxlayout_0(nullptr), m_btn_login(nullptr), m_btn_max(nullptr), m_btn_score(nullptr), m_qcombobox_0(nullptr), m_qlineedit_1(nullptr), m_logdlg(new LoginDlg()), m_scoredlg(new ScoreDetailDlg()){  resize(800, 600);  initUI();  initSlots();}voidMainPage::initUI(){  setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);  m_qvboxlayout_0 = new QVBoxLayout;  m_btn_max = new QPushButton;  m_btn_max->setText("最大化");  m_qvboxlayout_0->addWidget(m_btn_max);  m_btn_login = new QPushButton;  m_btn_login->setText("显示Login");  m_qvboxlayout_0->addWidget(m_btn_login);  m_btn_score = new QPushButton;  m_btn_score->setText("学生成绩");  m_qvboxlayout_0->addWidget(m_btn_score);  m_qcombobox_0 = new QComboBox;  m_qcombobox_0->addItem("Item 1");  m_qvboxlayout_0->addWidget(m_qcombobox_0);  m_qlineedit_1 = new QLineEdit;  m_qlineedit_1->setText("LineEdit");  m_qvboxlayout_0->addWidget(m_qlineedit_1);  QWidget * centralWidget = new QWidget(this);  setCentralWidget(centralWidget);  centralWidget->setLayout(m_qvboxlayout_0);}voidMainPage::initSlots(){  connect(m_qpushbutton_0, &QPushButton::clicked, this, & MainPage::showMaximized);   connect(m_btn_login, &QPushButton::clicked, m_logdlg, & LoginDlg::exec);   connect(m_qcombobox_0, &QComboBox::currentIndexChanged, this, & MainPage::onIndexChanged);   connect(m_qpushbutton_0, &QPushButton::clicked, m_scoredlg, & ScoreDetailDlg::exec); }voidMainPage::onIndexChanged(int param1){  // TODO: Here add yourself code}
转mfc后:
#define IDD_MAIN_PAGE_DLG       101#define IDC_BTN_MAXIMIZE        1001#define IDC_BTN_LOGIN           1002#define IDC_BTN_SCORE           1003#define IDC_COMBO_BOX           1004#define IDC_EDIT_LINE           1005IDD_MAIN_PAGE_DLG DIALOGEX 0, 0, 300, 200STYLE DS_SETFONT | DS_MODALFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENUCAPTION "Main Page"FONT 9, "Segoe UI"BEGIN    PUSHBUTTON "最大化", IDC_BTN_MAXIMIZE, 20, 20, 80, 25    PUSHBUTTON "显示Login", IDC_BTN_LOGIN, 20, 50, 80, 25    PUSHBUTTON "学生成绩", IDC_BTN_SCORE, 20, 80, 80, 25    COMBOBOX IDC_COMBO_BOX, 120, 20, 150, 60, CBS_DROPDOWN | CBS_SORT | WS_VSCROLL | WS_TABSTOP    EDITTEXT IDC_EDIT_LINE, 120, 50, 150, 15, ES_AUTOHSCROLLENDMainPageDlg.h#pragma once#include"LoginDlg.h"#include"ScoreDetailDlg.h"class CMainPageDlg : public CDialogEx{    DECLARE_DYNAMIC(CMainPageDlg)public:    CMainPageDlg(CWnd* pParent = nullptr);   // 标准构造函数    virtual ~CMainPageDlg();    enum { IDD = IDD_MAIN_PAGE_DLG };protected:    virtualvoidDoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持    virtual BOOL OnInitDialog();    afx_msg voidOnBnClickedBtnMaximize();    afx_msg voidOnBnClickedBtnLogin();    afx_msg voidOnBnClickedBtnScore();    afx_msg voidOnCbnSelchangeComboBox();    DECLARE_MESSAGE_MAP()private:    CLoginDlg* m_pLogDlg;    CScoreDetailDlg* m_pScoreDlg;    int m_count;};MainPageDlg.cpp#include"pch.h"#include"YourApp.h"// 你的应用类头文件#include"MainPageDlg.h"#include"afxdialogex.h"IMPLEMENT_DYNAMIC(CMainPageDlg, CDialogEx)CMainPageDlg::CMainPageDlg(CWnd* pParent /*=nullptr*/)    : CDialogEx(IDD_MAIN_PAGE_DLG, pParent)    , m_pLogDlg(nullptr)    , m_pScoreDlg(nullptr)    , m_count(0){    m_pLogDlg = new CLoginDlg(this);    m_pScoreDlg = new CScoreDetailDlg(this);}CMainPageDlg::~CMainPageDlg(){    delete m_pLogDlg;    delete m_pScoreDlg;}voidCMainPageDlg::DoDataExchange(CDataExchange* pDX){    CDialogEx::DoDataExchange(pDX);    DDX_Control(pDX, IDC_COMBO_BOX, m_ComboBox); // 可选:绑定控件变量}BEGIN_MESSAGE_MAP(CMainPageDlg, CDialogEx)    ON_BN_CLICKED(IDC_BTN_MAXIMIZE, &CMainPageDlg::OnBnClickedBtnMaximize)    ON_BN_CLICKED(IDC_BTN_LOGIN, &CMainPageDlg::OnBnClickedBtnLogin)    ON_BN_CLICKED(IDC_BTN_SCORE, &CMainPageDlg::OnBnClickedBtnScore)    ON_CBN_SELCHANGE(IDC_COMBO_BOX, &CMainPageDlg::OnCbnSelchangeComboBox)END_MESSAGE_MAP()BOOL CMainPageDlg::OnInitDialog(){    CDialogEx::OnInitDialog();    // 设置初始状态    SetWindowText(_T("Main Page"));    ModifyStyle(0, WS_MAXIMIZEBOX); // 确保有最大化按钮    // 初始化组合框    CComboBox* pCombo = (CComboBox*)GetDlgItem(IDC_COMBO_BOX);    if (pCombo)    {        pCombo->AddString(_T("Item 1"));        pCombo->SetCurSel(0);    }    // 初始化编辑框    GetDlgItem(IDC_EDIT_LINE)->SetWindowText(_T("LineEdit"));    return TRUE;  // return TRUE unless you set the focus to a control}voidCMainPageDlg::OnBnClickedBtnMaximize(){    ShowWindow(SW_MAXIMIZE);}voidCMainPageDlg::OnBnClickedBtnLogin(){    if (m_pLogDlg)    {        m_pLogDlg->DoModal(); // 相当于 Qt 的 exec()    }}voidCMainPageDlg::OnBnClickedBtnScore(){    if (m_pScoreDlg)    {        m_pScoreDlg->DoModal();    }}voidCMainPageDlg::OnCbnSelchangeComboBox(){    CComboBox* pCombo = (CComboBox*)GetDlgItem(IDC_COMBO_BOX);    if (pCombo)    {        int index = pCombo->GetCurSel();        CString text;        pCombo->GetLBText(index, text);        // TODO: 处理选择变化,相当于 onIndexChanged(int)        // 你可以在这里 emit 自定义通知(如通过回调或全局事件)    }}
快捷键回味
掌握一款工具我们需要掌握他的快捷键,这样往往能效率倍增,接下来我们回味下CodGneor的快捷键。
结束语
📌 CodeGenor自动 UI 类生成系统是一款功能强大、使用便捷的同时支持C++与Python(PySide/PyQt)的Qt UI 界面开发工具,一站式设计、项目生成、编译打包。它通过可视化设计和代码自动生成的方式,其中设计时期增加信号槽函数并绑定、自定义属性设置等功能大大简化了 UI 开发的流程,内部具有智能助手模块,能够极大提高了开发效率。无论是专业开发者还是初学者,都能从这款工具中受益。如果你正在寻找一款高效的 UI 开发工具,不妨尝试一下这款自动 UI 类生成系统。欢迎关注本人进行获取交流以及提供宝贵的意见。

    最新文章

    随机文章