Qt實現複雜的列表控制項

2021-06-13 17:50:59 字數 2005 閱讀 6823

qtcn上有人問,複雜列表控制項怎麼做?

控制項布局如下圖,求指點思路

有高手指點如下,

紅框圈起來的是qlabel,1個進度條,2個按鈕(toolbutton),1個布局,1個qwidget(容器),組成乙個widget。

放進qlistwidget裡。進度條用樣式表美化一下,參考:

其中主要用這個函式:

void qlistwidget::setitemwidget(qlistwidgetitem * item, qwidget * widget)然後應用css樣式美化。

樓主試驗,外面大布局可以用qlistwidget,然後將listitem寫成自定義的控制項集合,用函式setitemwidget()載入就好。

可以將自定義的控制項集單獨寫成乙個類,然後用這個類生成表項。

ui->alarmlistwidget->setresizemode(qlistview::adjust);

ui->alarmlistwidget->setautoscroll(true);

qwidget *wcontainer = new qwidget(ui->alarmlistwidget);

qhboxlayout *hlayout = new qhboxlayout(wcontainer);

qlabel *alarmicon = new qlabel(tr("beih"));

qlabel *placelabel = new qlabel(tr("北京"));

qlabel *videonumlabel = new qlabel(tr("8"));

qlabel *datelabel = new qlabel(tr("2013-4-16"));

qlabel *alarmmsglabel = new qlabel(tr("違章搭建"));

//qpushbutton *pdeletebtn = new qpushbutton(qicon(),tr("delete"));

hlayout->addwidget(alarmicon);

hlayout->addstretch(1);//將空白沒有widget的地方分成了若干份,按比例分配

hlayout->addwidget(placelabel);

hlayout->addstretch(1);

hlayout->addwidget(videonumlabel);

hlayout->addstretch(1);

hlayout->addwidget(datelabel);

hlayout->addstretch(1);//將空白沒有widget的地方分成了若干份,按比例分配

hlayout->addwidget(alarmmsglabel);

hlayout->setcontentsmargins(5,0,0,5);//關鍵**,如果沒有很可能顯示不出來

// wcontainer->setlayout(hlayout);//如果layout在建立時就已經將父視窗指標當引數,那就不用setlayout

wcontainer->resize(350,50);

// wcontainer->show();

qlistwidgetitem *alarmitem = new qlistwidgetitem(ui->alarmlistwidget);

ui->alarmlistwidget->setitemwidget(alarmitem,wcontainer);

Qt定製控制項列表

目錄本帖為持續更新帖,主要展示日常開發中各式各樣的控制項 複雜窗體。本帖中只包含了部分展示效果,更多展示效果後續陸續放出 本帖持續更新。支援元件定製 有償提供原始碼 原有進度條基礎上新增功效,顏色支援配置 支援多種顯示模式,和消失動畫 窗體當大時,字型支援平滑放大 支援凍結列 凍結行 自動行高 合併...

qt實現 標籤控制項

咱先別說啥了,直接上圖 對照圖大體介紹一哈 其實就是乙個視窗設定乙個橫向布局器,左邊乙個label,右邊乙個button 輸入框只要是監視回車事件 外面窗體布局是重點,需要動態去更新布局,動態有兩種 一種是將布局銷毀,重新去new,適合修改複雜布局的窗體 第二種就是動態的去插入 insertwidg...

Qt 控制項實現雙擊事件

qt中很多控制項有雙擊事件的功能,但是還是有些控制項如qwidget,qtabwidget等沒有該事件。解決辦法有兩種 以qtabwidget為例 首先我們繼承qtabwidget class mytabwidget public qtabwidget void mytabwidget moused...