C/C++幼兒教育輔助系統

最近初學c++中的qt,寫了一個超簡單的幼兒教育輔助系統,主要實現的功能有:3級菜單,可以用來練習加減乘除法,難度設置,題量設置。

最終效果如下:

一個29M的安裝器。

開始菜單和桌面均生成了快捷方式。

圖片是我最喜歡的畫師的畫,這裏僅僅用於個人學習,如果放出可能涉及侵權,所以不顯示了。

代碼的層次結構圖:

其中ChildrenEducationSystem.cpp是主函數,ChildrenEducationSystem.cpp是主窗口。Common.cpp是一個共有類。(最初這整個功能是用c語言寫的,後來用c++進行了重構,所以將原來的函數大部分放在Common類中以靜態變量的形式存儲)LevelAndNum是題量和難度設置窗口,SubMenu是子菜單窗口。

我在這次寫代碼中遇到的坑:

1.connect函數的使用:

connect的一般方法:

connect(sender,SIGNAL(signal()),receiver,SLOT(slot()));  

這個方法有一點不好,那就是SIGNAL和SLOT中的信號和曹的名稱都被當做了字符串來處理,所以即使寫錯了或者沒連上,也不會報錯。

qt5&c++11的環境下,可以使用更方便的“引用”以及“lamda表達式”

引用:

connect(ui->Btn, QPushButton::clicked,this,MyClass::Operation);

lamda表達式:

connect(ui->Btn, QPushButton::clicked,this

               [=](){

                /* do something.. 這裏一般用emit來發射信號*/

                });

對於所有的方法:

這個sender(也就是connect函數的第一個參數)必須是一個已經分配了內存且實例化之後的對象,如果沒有實例化,則無法使用connect完成綁定!!

2.如果使用了qtDesigner,當你修改了ui後卻發現編譯器(我這裏用到vs)中無法顯示時,可以在代碼目錄的HeaderFile > 添加 >現有項,在Debug目錄下的uic菜單中,找到你需要的ui_xxx.h,引入進來,這時候就能顯示出你修改後的控件名字了。

這個其實並不影響你寫代碼,也即是說,即使你的編譯器提示錯誤,但是正常編譯依舊是通過的。

3.發佈時在桌面創建快捷方式:

qt如何打包安裝可以看 這個博客。這裏使用的是Engima Virtual Box,安裝包比較大。個人傾向於使用qt installer,可以看 這篇博客

在qt installer中設置桌面和開始菜單快捷鍵就是要在.qs文件中寫下如下代碼:

Component.prototype.createOperations = function()
{
    // call default implementation to actually install README.txt!
    component.createOperations();
 
    if (systemInfo.productType === "windows") {
		var userProfile = installer.environmentVariable("USERPROFILE");
        installer.setValue("UserProfile", userProfile);
        component.addOperation("CreateShortcut", "@TargetDir@/幼兒教育輔助系統.exe", "@UserProfile@\\Desktop\\幼兒教育輔助系統.lnk");
        component.addOperation("CreateShortcut", "@TargetDir@/幼兒教育輔助系統.exe", "@StartMenuDir@/幼兒教育輔助系統.lnk",
            "workingDirectory=@TargetDir@", "iconPath=%SystemRoot%/system32/SHELL32.dll",
            "iconId=2", "description=Open README file");
    }
}

以上。若有需要源代碼可留下評論qq,我郵箱私發給你。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章