最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Qt學(xué)習(xí)之QListWidget控件的使用教程詳解

 更新時(shí)間:2022年12月02日 09:58:04   作者:音視頻開發(fā)老舅  
這篇文章主要為大家詳細(xì)介紹了Qt中QListWidget控件的使用教程,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Qt有一定的幫助,需要的可以參考一下

QListWidget去掉選中虛線框

虛線框如下所示,選中某項(xiàng)之后,文字包圍一個(gè)虛線框,

修改QSS,添加outline約束即可,

QListView { 
   
        /*border: 1px solid #636363;*/
        border: 0px;
        selection-background-color: #4D4D4D;
        selection-color: #F0F0F0;
        background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #4D4D4D, stop:1 #292929);
        outline:0px;
}

QListWidget添加自定義窗體

原文是這樣設(shè)計(jì)的:上面的導(dǎo)航切換選項(xiàng)卡使用QTabWidget,左側(cè)導(dǎo)航使用QListWidget,右側(cè)的顯示區(qū)域使用QScrollArea控件;主要使用垂直滾動(dòng)條的valueChanged事件和QListWidget的itemClicked事件;通過調(diào)用QWidget的visibleRegion().isEmpty() 判斷QScrollArea中滑動(dòng)過的區(qū)域,通過垂直滾動(dòng)條的setSliderPosition方法設(shè)置QScrollArea的新的區(qū)域。 在功能區(qū),我這里稱之為面板容器,原文博主選擇用QScrollArea作為容器,我這里打算采用QListWidget來實(shí)現(xiàn)這個(gè)容器,

修改QSS,添加outline約束即可,

QListView { 
   
        /*border: 1px solid #636363;*/
        border: 0px;
        selection-background-color: #4D4D4D;
        selection-color: #F0F0F0;
        background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 #4D4D4D, stop:1 #292929);
        outline:0px;
}

QListWidget添加自定義窗體

繼續(xù)學(xué)習(xí)博客Qt淺談之三十五仿QQ設(shè)置面板功能,博主的界面長這樣,

原文是這樣設(shè)計(jì)的:上面的導(dǎo)航切換選項(xiàng)卡使用QTabWidget,左側(cè)導(dǎo)航使用QListWidget,右側(cè)的顯示區(qū)域使用QScrollArea控件;主要使用垂直滾動(dòng)條的valueChanged事件和QListWidget的itemClicked事件;通過調(diào)用QWidget的visibleRegion().isEmpty() 判斷QScrollArea中滑動(dòng)過的區(qū)域,通過垂直滾動(dòng)條的setSliderPosition方法設(shè)置QScrollArea的新的區(qū)域。 在功能區(qū),我這里稱之為面板容器,原文博主選擇用QScrollArea作為容器,我這里打算采用QListWidget來實(shí)現(xiàn)這個(gè)容器,

(錄屏軟件超級(jí)錄屏,然后用迅雷看看轉(zhuǎn)換成gif格式) 先看一下自定義窗口設(shè)置,主要使用setItemWidget函數(shù),QSS里把邊框設(shè)成0px,另外hover和selected的狀態(tài)需要保持一致,否則鼠標(biāo)滑過的狀態(tài)不一樣。

    /*QListWidgetItem**/ pLwiTcpClientContainer = new QListWidgetItem();
    //pLwiTcpClientContainer->setSizeHint(QSize(400, 400));
    pLwContainer->addItem(pLwiTcpClientContainer);
    pLwContainer->setItemWidget(pLwiTcpClientContainer, pWgtTcpClientPannel);
    /*QListWidgetItem**/ pLwiTcpServerContainer = new QListWidgetItem();
    //pLwiTcpServerContainer->setSizeHint(QSize(400, 400));
    pLwContainer->addItem(pLwiTcpServerContainer);
    pLwContainer->setItemWidget(pLwiTcpServerContainer, pWgtTcpServerPannel);
    /*QListWidgetItem**/ pLwiUdpClientContainer = new QListWidgetItem();
    //pLwiUdpClientContainer->setSizeHint(QSize(400, 400));
    pLwContainer->addItem(pLwiUdpClientContainer);
    pLwContainer->setItemWidget(pLwiUdpClientContainer, pWgtUdpClientPannel);
    if (index < pLwContainer->count())
    { 
   
        pLwContainer->setCurrentRow(index);
    }
    connect(pLwContainer, SIGNAL(itemClicked(QListWidgetItem*)), this, SLOT(OnLwContainerItemClicked(QListWidgetItem*)));
    connect(pLwContainer->verticalScrollBar(), SIGNAL(valueChanged(int)), this, SLOT(OnLwContainerVsbValueChanged(int)));

讓一個(gè)item獨(dú)占窗口,通過mainwindows的resizeEvent實(shí)現(xiàn),

void MainWindow::resizeEvent(QResizeEvent *event)
{ 
   
    int x, y;
    x = this->width() - pLwLeftPannel->width() - 10;
    y = this->height() - pWgtTitle->height();
    pLwiTcpClientContainer->setSizeHint(QSize(x, y));
    pLwiTcpServerContainer->setSizeHint(QSize(x, y));
    pLwiUdpClientContainer->setSizeHint(QSize(x, y));
    QMainWindow::resizeEvent(event);
}

左側(cè)列表和容器聯(lián)動(dòng),通過valueChanged信號(hào)實(shí)現(xiàn),這里value取值是離散的,打印了才知道,所以這里的進(jìn)度條拖動(dòng)的效果是卡頓的,不像原文博主那樣流暢。

void MainWindow::OnLwContainerVsbValueChanged(int value)
{ 
   
    Q_UNUSED(value);
    if (value < pLwLeftPannel->count())
    { 
   
        pLwLeftPannel->setCurrentRow(value);
    }
    else
    { 
   
        qDebug() << "OnLwContainerVsbValueChanged value overflow" << value;
    }
}

自定義窗體無需設(shè)置大小,通過在外部是同item的setSizeHint來實(shí)現(xiàn),

QePartitionItem::QePartitionItem(QWidget *parent) : QWidget(parent)
{ 
   
    QGridLayout* pGLyt = new QGridLayout();
    QLabel* pLabName = new QLabel(tr("Name: "));
    pLabNameVal = new QLabel("waiting...");
    QLabel* pLabFs = new QLabel(tr("Filesystem: "));
    pLabFsVal = new QLabel("waiting...");
    QLabel* pLabCap = new QLabel(tr("Capacity: "));
    pLabCapVal = new QLabel("waiting...");
    QLabel* pLabResCap = new QLabel(tr("Resdual Capacity: "));
    pLabResCapVal = new QLabel("waiting...");
    pGLyt->addWidget(pLabName, 0, 0);
    pGLyt->addWidget(pLabNameVal, 0, 1, 1, 1, Qt::AlignCenter);
    pGLyt->addWidget(pLabFs, 1, 0);
    pGLyt->addWidget(pLabFsVal, 1, 1, 1, 1, Qt::AlignCenter);
    pGLyt->addWidget(pLabCap, 2, 0);
    pGLyt->addWidget(pLabCapVal, 2, 1, 1, 1, Qt::AlignCenter);
    pGLyt->addWidget(pLabResCap, 3, 0);
    pGLyt->addWidget(pLabResCapVal, 3, 1, 1, 1, Qt::AlignCenter);
    this->setLayout(pGLyt);
    //this->setFixedHeight(160);
}
 
QePartitionItem* pi = new QePartitionItem();
QListWidgetItem* item = new QListWidgetItem();
item->setSizeHint(QSize(240, 160));
pLwPartition->addItem(item);
pLwPartition->setItemWidget(item, pi);

這樣qss才可以正常渲染item,如下所示,不設(shè)置sizehint,當(dāng)窗口大小超過item默認(rèn)大小(30pix左右),qss僅渲染默認(rèn)部分。

到此這篇關(guān)于Qt學(xué)習(xí)之QListWidget控件的使用教程詳解的文章就介紹到這了,更多相關(guān)Qt QListWidget內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語言內(nèi)存函數(shù)的具體使用

    C語言內(nèi)存函數(shù)的具體使用

    本文介紹了C語言中幾個(gè)常用的內(nèi)存函數(shù),包括memcpy、memmove、memset、memcmp的使用方法及其模擬實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-11-11
  • C語言動(dòng)態(tài)規(guī)劃多種背包問題分析講解

    C語言動(dòng)態(tài)規(guī)劃多種背包問題分析講解

    背包問題(Knapsack problem)是一種組合優(yōu)化的NP完全問題。問題可以描述為:給定一組物品,每種物品都有自己的重量和價(jià)格,在限定的總重量內(nèi),我們?nèi)绾芜x擇,才能使得物品的總價(jià)格最高
    2022-04-04
  • C語言的運(yùn)算符你了解嗎

    C語言的運(yùn)算符你了解嗎

    這篇文章主要介紹了C語言中的運(yùn)算符,本文給大家介紹的非常詳細(xì),具有參考借鑒價(jià)值,需要的朋友可以參考下,希望能給你帶來幫助
    2021-08-08
  • C語言關(guān)鍵字auto與register及static專項(xiàng)詳解

    C語言關(guān)鍵字auto與register及static專項(xiàng)詳解

    這篇文章主要解釋了c語言中什么是數(shù)據(jù)類型,什么是變量,他們的真正含義是什么。分析了屬性關(guān)鍵字auto,register和static的用法
    2022-07-07
  • C++語言實(shí)現(xiàn)hash表詳解及實(shí)例代碼

    C++語言實(shí)現(xiàn)hash表詳解及實(shí)例代碼

    這篇文章主要介紹了C++語言實(shí)現(xiàn)hash表詳解及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-01-01
  • C++實(shí)現(xiàn)LeetCode(68.文本左右對(duì)齊)

    C++實(shí)現(xiàn)LeetCode(68.文本左右對(duì)齊)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(68.文本左右對(duì)齊),本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • c語言程序設(shè)計(jì)文件操作方法示例(CreateFile和fopen)

    c語言程序設(shè)計(jì)文件操作方法示例(CreateFile和fopen)

    c主要的文件操作函數(shù)有:CreateFile,CloseHandle,ReadFile,WriteFile,SetFilePointer,GetFileSize。其中的讀寫操作是以字符為單位,獲得文件大小也是以字符為單位。
    2013-12-12
  • C++如何用數(shù)組模擬鏈表

    C++如何用數(shù)組模擬鏈表

    大家好,本篇文章主要講的是C++如何用數(shù)組模擬鏈表,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-01-01
  • Qt如何通過pos()獲取坐標(biāo)信息

    Qt如何通過pos()獲取坐標(biāo)信息

    這篇文章主要給大家介紹了關(guān)于Qt如何通過pos()獲取坐標(biāo)信息的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用qt具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2024-01-01
  • C++與QML進(jìn)行數(shù)據(jù)交互實(shí)現(xiàn)方式介紹

    C++與QML進(jìn)行數(shù)據(jù)交互實(shí)現(xiàn)方式介紹

    迫于無奈開始寫android的程序,以前使用QWidget的方式試過,雖然界面可以實(shí)現(xiàn),但是最后調(diào)用攝像頭時(shí),未能成功,再?zèng)]有繼續(xù)。這幾天開始使用qml進(jìn)行嘗試,在使用的過程中,其中的一個(gè)難點(diǎn),就是在qml與c++中數(shù)據(jù)的交互
    2022-09-09

最新評(píng)論

曲阳县| 陵水| 合山市| 瑞金市| 宜黄县| 清原| 施甸县| 宜春市| 屏东市| 江油市| 青阳县| 修文县| 佳木斯市| 宜城市| 那曲县| 邯郸县| 巴彦县| 洛宁县| 皋兰县| 博客| 乌兰浩特市| 兴隆县| 法库县| 西峡县| 西和县| 岢岚县| 通辽市| 栾城县| 遵化市| 山阳县| 马关县| 筠连县| 民丰县| 小金县| 留坝县| 堆龙德庆县| 庆安县| 富蕴县| 河池市| 黑水县| 庆元县|