【嵌入式——QT】QListWidget

QListWidget類提供了一個基于項的列表小部件,QListWidgetItem是列表中的項,該篇文章中涉及到的功能有添加列表項,插入列表項,刪除列表項,清空列表,向上移動列表項,向下移動列表項。

常用API

  • addItem(const QString &label):添加項;
  • addItems(const QStringList &labels):添加集合項;
  • insertItem(int row, QListWidgetItem *item):插入項;
  • currentItem() const:當前項
  • currentRow() const:當前行;
  • item(int row) const:如果列表中給定行的元素被設置,則返回對應的元素;否則返回null;
  • row(const QListWidgetItem *item) const:返回包含給定項的行;
  • count() const:反列表中項目的數量;
  • takeItem(int row):移除項;

常用信號

  • void currentItemChanged(QListWidgetItem *current, QListWidgetItem *previous):每當當前元素發生變化時,就會發出這個信號;
  • void currentRowChanged(int currentRow):每當當前元素發生變化時,就會發出這個信號;
  • void currentTextChanged(const QString &currentText):每當當前元素發生變化時,就會發出這個信號;
  • void itemActivated(QListWidgetItem *item):當項目被激活時,這個信號就會發出。根據系統配置,當用戶單擊或雙擊該項目時,該項目將被激活;
  • void itemChanged(QListWidgetItem *item):每當item的數據發生變化時,就會發出這個信號;
  • void itemClicked(QListWidgetItem *item):當鼠標按鈕單擊部件中的某個項目時,該信號由指定的項目發出;
  • void itemDoubleClicked(QListWidgetItem *item):當鼠標按鈕雙擊部件中的某個項目時,該信號由指定的項目發出;
  • void itemEntered(QListWidgetItem *item):當鼠標光標進入某個元素時,就會發出這個信號。項目就是輸入的項目。這個信號只有在mouseTracking被打開,或者鼠標移動到某個元素時按下了鼠標按鈕時才會發出;
  • void itemPressed(QListWidgetItem *item):當在部件中的某個項目上按下鼠標按鈕時,該信號由指定的項目發出;
  • void itemSelectionChanged():每當選擇發生變化時,就會發出這個信號;

圖片示例
在這里插入圖片描述
代碼示例
QlistWidgetDialog.h

#ifndef QLISTWIDGETDIALOG_H
#define QLISTWIDGETDIALOG_H#include <QDialog>
#include <QListWidgetItem>
namespace Ui
{class QlistWidgetDialog;
}class QlistWidgetDialog : public QDialog
{Q_OBJECTpublic:explicit QlistWidgetDialog(QWidget* parent = nullptr);~QlistWidgetDialog();private slots:void on_pushButtonAdd_clicked();void on_pushButtonUp_clicked();void on_pushButtonDown_clicked();void on_pushButtonRemove_clicked();void on_pushButtonClear_clicked();void on_pushButtonInsert_clicked();void on_listWidget_currentRowChanged(int currentRow);void on_listWidget_currentItemChanged(QListWidgetItem* current, QListWidgetItem* previous);void on_listWidget_currentTextChanged(const QString& currentText);void on_listWidget_customContextMenuRequested(const QPoint& pos);private:Ui::QlistWidgetDialog* ui;};#endif // QLISTWIDGETDIALOG_H

QlistWidgetDialog.cpp

#include "QlistWidgetDialog.h"
#include "ui_QlistWidgetDialog.h"
#include <QListWidgetItem>>
#include <QDebug>
#include <QMenu>
QlistWidgetDialog::QlistWidgetDialog(QWidget* parent): QDialog(parent), ui(new Ui::QlistWidgetDialog)
{ui->setupUi(this);//listWidget屬性設置為自定義菜單 才可以鼠標右鍵自定義右鍵菜單ui->listWidget->setContextMenuPolicy(Qt::CustomContextMenu);
}QlistWidgetDialog::~QlistWidgetDialog()
{delete ui;
}void QlistWidgetDialog::on_pushButtonAdd_clicked()
{QString text = ui->lineEdit->text();QListWidgetItem* item = new QListWidgetItem(text);// 可編輯item->setFlags(Qt::ItemIsEditable | Qt::ItemIsEnabled);ui->listWidget->addItem(item);
}void QlistWidgetDialog::on_pushButtonUp_clicked()
{QListWidgetItem* selectItem = ui->listWidget->currentItem();int curRow = ui->listWidget->row(selectItem);if(curRow > 0) {ui->listWidget->takeItem(curRow);ui->listWidget->insertItem(curRow - 1, selectItem);ui->listWidget->setCurrentItem(selectItem);}
}void QlistWidgetDialog::on_pushButtonDown_clicked()
{QListWidgetItem* selectItem = ui->listWidget->currentItem();int curRow = ui->listWidget->row(selectItem);if(curRow < ui->listWidget->count() - 1) {//移除當前行號的itemui->listWidget->takeItem(curRow);//在curRow+1位置插入選中的itemui->listWidget->insertItem(curRow + 1, selectItem);//設置選中的item為當前itemui->listWidget->setCurrentItem(selectItem);}
}void QlistWidgetDialog::on_pushButtonRemove_clicked()
{int row = ui->listWidget->currentRow();//移除項QListWidgetItem* dItem = ui->listWidget->takeItem(row);//刪除對象delete dItem;
}void QlistWidgetDialog::on_pushButtonClear_clicked()
{ui->listWidget->clear();
}void QlistWidgetDialog::on_pushButtonInsert_clicked()
{QString text = ui->lineEdit->text();int curRow = ui->listWidget->currentRow();QListWidgetItem* newItem = new QListWidgetItem(text);ui->listWidget->insertItem(curRow, newItem);
}void QlistWidgetDialog::on_listWidget_currentRowChanged(int currentRow)
{qDebug()<<"currentRow"<<currentRow;
}void QlistWidgetDialog::on_listWidget_currentItemChanged(QListWidgetItem* current, QListWidgetItem* previous)
{// QString curText = current->text();// QString preText = previous->text();// qDebug()<<"curText"<<curText<<"preText"<<preText;
}void QlistWidgetDialog::on_listWidget_currentTextChanged(const QString& currentText)
{qDebug()<<"currentText"<<currentText;
}//鼠標右鍵
void QlistWidgetDialog::on_listWidget_customContextMenuRequested(const QPoint& pos)
{Q_UNUSED(pos);QMenu* menu = new QMenu(this);QAction* act1 = new  QAction("act1");QAction* act2 = new  QAction("act2");QAction* act3 = new  QAction("act3");QAction* act4 = new  QAction("act4");menu->addAction(act1);menu->addAction(act2);menu->addAction(act3);menu->addAction(act4);menu->exec(QCursor::pos());//在鼠標光標位置顯示右鍵快捷菜單delete menu;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/714620.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/714620.shtml
英文地址,請注明出處:http://en.pswp.cn/news/714620.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C語言數據結構基礎——雙鏈表專題

前言 書接上回&#xff0c;雙鏈表便是集齊帶頭、雙向、循環等幾乎所有元素的單鏈表PLUS. 1.初始化、創建雙鏈表 typedef int LTDataType; typedef struct LTNode {LTDataType data;struct LTNode* next;struct LTNode* prev; }LTNode; 不同于單鏈表&#xff0c;此時每個節點應…

selenium初始學習--打開新標簽操作

selenium 打開新標簽操作 簡單說一下使用 環境 &#xff1a;python 3.9 selenium 4,18 初始化操作 目的 打開bilibilie網站并搜索視頻&#xff08;電影&#xff09; 并點擊觀看 操作 打開應用并搜索網址 from selenium import webdriver import timefrom selenium.webdr…

PySide6+VSCode Python可視化環境搭建

#記住在cmd中運行&#xff0c;不要在vscode里運行&#xff0c;否則env會裝到工程目錄下 python -m venv env #env\Scripts\activate.bat pip install pyside6 下載本期源碼 vscode裝一個PYQT Integration插件&#xff0c;設置好兩個路徑&#xff08;下面有個腳本用于獲取路徑&…

MySQL 數據庫表設計和優化

一、數據結構設計 正確的數據結構設計對數據庫的性能是非常重要的。 在設計數據表時&#xff0c;盡量遵循一下幾點&#xff1a; 將數據分解為合適的表&#xff0c;每個表都應該有清晰定義的目的&#xff0c;避免將過多的數據存儲在單個表中。使用適當的數據類型來存儲數據&…

2020小學甲組--恢復數組

題目描述 有一個數組a[1..n]&#xff0c;但是這個數組的內容丟失了&#xff0c;你要嘗試恢復它。已知以下的三個事實&#xff1a; 1、對于1<i<n&#xff0c;都有a[i]>0&#xff0c;且所有的a[i]互不相同。即a數組保存的全部都是正整數&#xff0c;且互不相同。 2、…

挑戰杯 基于機器視覺的車道線檢測

文章目錄 1 前言2 先上成果3 車道線4 問題抽象(建立模型)5 幀掩碼(Frame Mask)6 車道檢測的圖像預處理7 圖像閾值化8 霍夫線變換9 實現車道檢測9.1 幀掩碼創建9.2 圖像預處理9.2.1 圖像閾值化9.2.2 霍夫線變換 最后 1 前言 &#x1f525; 優質競賽項目系列&#xff0c;今天要分…

范偉:你們怎么老提1,200呢,有什么典故啊?趙本山:沒有啊!

范偉&#xff1a;你們怎么老提1,200呢,有什么典故啊?趙本山&#xff1a;沒有啊&#xff01; --小品《面子》&#xff08;中3&#xff09;的臺詞 表演者&#xff1a;趙本山 高秀敏 范偉 &#xff08;接上&#xff09; 范偉&#xff1a;哎吃啊 趙&#xff1a;哎呀這電視看的挺…

Acwing枚舉、模擬與排序(一)

連號區間數 原題鏈接&#xff1a;https://www.acwing.com/problem/content/1212/ 初始最小值和最大值的依據是題目給出的數據范圍。只要在數據范圍之外就可以。 連號的時候&#xff0c;相鄰元素元素之間&#xff0c;差值為1。那么區間右邊界和左邊界&#xff0c;的值的差&#…

cAdvisor+Prometheus+Grafana 搞定Docker容器監控平臺

cAdvisorPrometheusGrafana cAdvisorPrometheusGrafana 搞定Docker容器監控平臺1、先給虛擬機上傳cadvisor2、What is Prometheus?2.1、架構圖 3、利用docker安裝普羅米修斯4、安裝grafana cAdvisorPrometheusGrafana 搞定Docker容器監控平臺 1、先給虛擬機上傳cadvisor cAd…

MySQL事務和鎖機制

MySQL技術——事務和鎖機制 一、事務&#xff08;1&#xff09;概述&#xff08;2&#xff09;ACID特性&#xff08;3&#xff09;事務并發存在的問題&#xff08;4&#xff09;事務的隔離級別 二、鎖機制&#xff08;1&#xff09;鎖的力度&#xff08;2&#xff09;表的分類&…

網絡編程-編碼與解碼(Protobuf)

編碼與解碼 下面的文字都來自于極客時間 為什么要編解碼呢&#xff1f;因為計算機數據傳輸的是二進制的字節數據 解碼&#xff1a;字節數據 --> 字符串&#xff08;字符數據&#xff09; 編碼&#xff1a;字符串&#xff08;字符數據&#xff09;–> 字節數據 我們在編…

Python 實現海康機器人工業相機 MV-CS050-10GC 的實時顯示視頻流及拍照功能(實時顯示視頻流同時可以進行拍照)

參考鏈接&#xff1a; https://www.cnblogs.com/HanYork/p/17388506.html https://www.cnblogs.com/miracle-luna/p/16960556.html#5138211 Flask搭建流媒體服務器&#xff1a;使用Flask搭建一個流媒體服務器_multipart/x-mixed-replace; boundaryframe-CSDN博客

公共字段自動填充

在開發中經常面臨對于一些公共字段的賦值。 如在下表中&#xff1a; 如何讓程序自動為我們需要賦值的公共字段進行賦值&#xff0c;避免在業務代碼中重復寫這些公共字段的賦值代碼 如下圖所示&#xff1a; 實現思路&#xff1a; 1.自定義注解AutoFill&#xff0c;用于標識需…

linux環境安裝cuda toolkit

1 全新安裝 如果環境中沒安裝過cuda版本&#xff0c; 這種情況下比較簡單。 直接在https://developer.nvidia.com/cuda-toolkit-archive選擇對應版本下載安裝即可。 如下為安裝cuda toolkit 11.8. 2 環境中已經存在其他版本 這種情況下比較復雜一些。 首先要確認最高支持的…

李沐動手學習深度學習——4.2練習

1. 在所有其他參數保持不變的情況下&#xff0c;更改超參數num_hiddens的值&#xff0c;并查看此超參數的變化對結果有何影響。確定此超參數的最佳值。 通過改變隱藏層的數量&#xff0c;導致就是函數擬合復雜度下降&#xff0c;隱藏層過多可能導致過擬合&#xff0c;而過少導…

Git多人合作的推送流程

多人合作時&#xff0c;使用Git進行代碼推動&#xff08;push&#xff09;需要一定的協調和規范&#xff0c;以確保代碼庫的整體健康。以下是一個常見的多人合作時的Git代碼推動流程&#xff1a; 同步主分支&#xff1a; 在推送之前&#xff0c;確保你的本地主分支&#xff08;…

【Java】四大函數式接口

消費型接口Consumer 消費型接口接收一個輸入&#xff0c;沒有返回值 在stream流計算中 forEach() 接收一個消費型接口Consumer用于 遍歷元素 /*** 消費型接口* 接收一個輸入&#xff0c;沒有返回值*/ public class demo01 {public static void main(String[] args) {//TODO 消…

【MySQL】表的內連和外連(重點)

表的連接分為內連和外連。 一、內連接 內連接實際上就是利用 where 子句對兩種表形成的笛卡兒積進行篩選&#xff0c;前面學習的查詢都是內連接&#xff0c;也是在開發過程中使用的最多的連接查詢。 select 字段 from 表1 inner join 表2 on 連接條件 and 其他條件; 注意&…

【數倉】Hadoop集群配置常用參數說明

Hadoop集群中&#xff0c;需要配置的文件主要包括四個 配置核心Hadoop參數&#xff1a; 編輯core-site.xml文件&#xff0c;設置Hadoop集群的基本參數&#xff0c;如文件系統、Hadoop臨時目錄等。 配置HDFS參數&#xff1a; 編輯hdfs-site.xml文件&#xff0c;設置HDFS的相關參…

策略開發:EMA如何計算

EMA的計算原理 EMA 是MA&#xff08;平滑移動平均線&#xff09;的另一種形式。全名“加權指數移動平均線”。 2/13就是12日移動平均線的平滑因子&#xff0c;他的意思是指&#xff1a;給予新價格 2/13的權重&#xff0c;給予過去的EMA 11/13的權重。 在計算的時候第一天的M…