QRadioButton分組且無邊框的簡單實現

2021-06-25 20:59:44 字數 4532 閱讀 2066

最近在用qt+vs2008做乙個專案,涉及到乙個綜合測評表,說白了有點像問卷調查%26mdash;%26mdash;很多題目每題若干個選項。

初始時打算用下拉框,每個框中填入所有選項,但後來一琢磨這種方式不夠直觀與人性化,增添了一步使用者下拉的操作。

於是決定換用單選按鈕,在qt中叫做qradiobutton。啪啦啪啦一陣折騰,介面上前一半是題目,後一半全是一行一行的小圓孔,直接上圖:

興奮地馬上編譯、執行,一點瞬間懵了,整個介面上只有乙個按鈕同時有效。

當然,頭腦冷靜下來後就知道原因了:沒有對這些按鈕進行分組處理。

分組,首先憑直覺想到的就是利用qgroupbox,前面忘了解釋,其實qt中控制項類的名稱與使用方法和mfc類似,只是接觸久了發現前者更容易通過純**實現gui應用程式的開發。

立即對每行的四個小不點配備乙個qgroupbox,由於是水平排布,又借用了qhboxlayout控制項,可以通過其方法設定子控制項的間距等屬性。

又是啪啦啪啦一陣,編譯、執行,發現每行都存在乙個組框,顯然不夠美觀,上網查唄。

高手如雲,招式乙個接乙個,試了幾種改變qgroupbox的屬性,均以失敗告終。

最終採納了一種樸素又高大上的土方法:利用qwidget替代qgroupbox,即能勝任工作又環保無邊框。

簡單地find and replace了一下,達到目的了。下面給出上面五組的完整實現**,比較笨拙,各位朋友看了之後給點建議,希望能從**量與複雜度上改進一番!

在%26ldquo;***.h%26rdquo;中宣告所需變數,這裡只給出單選按鈕部分:

qradiobutton *jradio11;

qradiobutton *jradio12;

qradiobutton *jradio13;

qradiobutton *jradio14;

qradiobutton *jradio21;

qradiobutton *jradio22;

qradiobutton *jradio23;

qradiobutton *jradio24;

qradiobutton *jradio31;

qradiobutton *jradio32;

qradiobutton *jradio33;

qradiobutton *jradio34;

qradiobutton *jradio41;

qradiobutton *jradio42;

qradiobutton *jradio43;

qradiobutton *jradio44;

qradiobutton *jradio51;

qradiobutton *jradio52;

qradiobutton *jradio53;

qradiobutton *jradio54;

qwidget *jiaxiangg1;

qwidget *jiaxiangg2;

qwidget *jiaxiangg3;

qwidget *jiaxiangg4;

qwidget *jiaxiangg5;

qhboxlayout *jiaxiangh1;

qhboxlayout *jiaxiangh2;

qhboxlayout *jiaxiangh3;

qhboxlayout *jiaxiangh4;

qhboxlayout *jiaxiangh5;

在%26ldquo;***.cpp%26rdquo;中實現:

jradio11 = new qradiobutton(this);

jradio12 = new qradiobutton(this);

jradio13 = new qradiobutton(this);

jradio14 = new qradiobutton(this);

jradio21 = new qradiobutton(this);

jradio22 = new qradiobutton(this);

jradio23 = new qradiobutton(this);

jradio24 = new qradiobutton(this);

jradio31 = new qradiobutton(this);

jradio32 = new qradiobutton(this);

jradio33 = new qradiobutton(this);

jradio34 = new qradiobutton(this);

jradio41 = new qradiobutton(this);

jradio42 = new qradiobutton(this);

jradio43 = new qradiobutton(this);

jradio44 = new qradiobutton(this);

jradio51 = new qradiobutton(this);

jradio52 = new qradiobutton(this);

jradio53 = new qradiobutton(this);

jradio54 = new qradiobutton(this);

jiaxiangg1 = new qwidget(this);

jiaxiangg2 = new qwidget(this);

jiaxiangg3 = new qwidget(this);

jiaxiangg4 = new qwidget(this);

jiaxiangg5 = new qwidget(this);

jiaxiangh1 = new qhboxlayout(this);

jiaxiangh2 = new qhboxlayout(this);

jiaxiangh3 = new qhboxlayout(this);

jiaxiangh4 = new qhboxlayout(this);

jiaxiangh5 = new qhboxlayout(this);

jiaxiangh1-%26gt;addwidget(jradio11);

jiaxiangh1-%26gt;addwidget(jradio12);

jiaxiangh1-%26gt;addwidget(jradio13);

jiaxiangh1-%26gt;addwidget(jradio14);

jiaxiangg1-%26gt;setlayout(jiaxiangh1);

jiaxiangg1-%26gt;setgeometry(qrect(705,205,250,35));

jiaxiangh2-%26gt;addwidget(jradio21);

jiaxiangh2-%26gt;addwidget(jradio22);

jiaxiangh2-%26gt;addwidget(jradio23);

jiaxiangh2-%26gt;addwidget(jradio24);

jiaxiangg2-%26gt;setlayout(jiaxiangh2);

jiaxiangg2-%26gt;setgeometry(qrect(705,280,250,35));

jiaxiangh3-%26gt;addwidget(jradio31);

jiaxiangh3-%26gt;addwidget(jradio32);

jiaxiangh3-%26gt;addwidget(jradio33);

jiaxiangh3-%26gt;addwidget(jradio34);

jiaxiangg3-%26gt;setlayout(jiaxiangh3);

jiaxiangg3-%26gt;setgeometry(qrect(705,365,250,35));

jiaxiangh4-%26gt;addwidget(jradio41);

jiaxiangh4-%26gt;addwidget(jradio42);

jiaxiangh4-%26gt;addwidget(jradio43);

jiaxiangh4-%26gt;addwidget(jradio44);

jiaxiangg4-%26gt;setlayout(jiaxiangh4);

jiaxiangg4-%26gt;setgeometry(qrect(705,445,250,35));

jiaxiangh5-%26gt;addwidget(jradio51);

jiaxiangh5-%26gt;addwidget(jradio52);

jiaxiangh5-%26gt;addwidget(jradio53);

jiaxiangh5-%26gt;addwidget(jradio54);

jiaxiangg5-%26gt;setlayout(jiaxiangh5);

jiaxiangg5-%26gt;setgeometry(qrect(705,525,250,35));

QRadioButton分組且無邊框的簡單實現

最近在用qt vs2008做乙個專案,涉及到乙個綜合測評表,說白了有點像問卷調查 26mdash 26mdash 很多題目每題若干個選項。初始時打算用下拉框,每個框中填入所有選項,但後來一琢磨這種方式不夠直觀與人性化,增添了一步使用者下拉的操作。於是決定換用單選按鈕,在qt中叫做qradiobutt...

QRadioButton分組且無邊框的簡單實現

最近在用qt vs2008做乙個專案,涉及到乙個綜合測評表,說白了有點像問卷調查 很多題目每題若干個選項。初始時打算用下拉框,每個框中填入所有選項,但後來一琢磨這種方式不夠直觀與人性化,增添了一步使用者下拉的操作。於是決定換用單選按鈕,在qt中叫做qradiobutton。啪啦啪啦一陣折騰,介面上前...

分組合計且排序和顯示名稱

分組合計的乙個問題是,合計中最大的問題是 只能顯示groupby的字段,不能顯示其它的字段。有時還需要排序,就很麻煩。這裡有乙個實現。select a.b.zu no as zuhao,b.qu as quming,b.dui as duiming,b.zu as zuming from selec...