QT开发 QListWidget点击返回行号的问题

QT开发 QListWidget点击返回行号的问题,第1张

listWidgetsetSelectionMode(QtGuiQAbstractItemViewExtendedSelection) #设置选择模式

QList<QListWidgetItem> selItemList = listWidgetselectedItems() //返回一个包含选中了的item对象 的list 对象

鼠标点击时,会发出itemClicked()信号。信号的参数是ListWidgetItem ,用此指针和数据源的每一项逐个比较,就是到行号了。(不过单纯知道ListWidget行号没有意义,因为画面排序后行号会变化)

QListView是基于Model,而QListWidget是基于Item。

往QListView中添加条目需借助QAbstractListModel:

// 如: MainWindow::MainWindow(QWidget parent) : QMainWindow(parent), ui(new Ui::MainWindow){ ui->setupUi(this); QStringListModel slm = new QStringListModel(this); QStringList sl = new QStringList(); sl->append("asdfsadfsa"); sl->append("asdfsadfsa"); sl->append("asdfsadfsa"); slm->setStringList(sl); ui->listView->setModel(slm); delete sl;}

而在QListWidget中添加条目可以直接additem

// 如:MainWindow::MainWindow(QWidget parent) : QMainWindow(parent), ui(new Ui::MainWindow){ ui->setupUi(this); QStringList sl = new QStringList(); sl->append("1"); sl->append("2"); sl->append("3"); ui->listWidget->addItems(sl); connect(ui->pushButton,SIGNAL(clicked()), this, SLOT(close()));}

listWidget = QListWidget() #实例化一个(itembase)的列表listWidgetaddItem('dd') #添加一个项listWidgetaddItems([]) #从序列中添加子项listWidgetsetDragEnabled(True)#设置拖拉listWidgetsortItems() #排序listWidgetselectAll()#全选listWidgetsetSortingEnabled(bool)#设置自动排序listWidgetsetSelectionMode(QtGuiQAbstractItemViewExtendedSelection)#设置选择模式选择模式有:ExtendedSelection 按住ctrl多选SingleSelection 单选 MultiSelection 点击多选 ContiguousSelection 鼠标拖拉多选listWidgetsetCurrentRow(0) #设置当前选择行默认为-1listWidgetcount() #得到子项总数listWidgetitem(row)text() #得到第 row 行的内容 listWidgetitem(row) 返回一个 item 对象listWidgettakeItem(row) #返回row 行的所在的item 对象 可以用在 insertItem()中listWidgetinsertItem(2,item) #在第二行插入一项item可谓为一个listviewitem对象或者stringlistWidgetsetCurrentItem('dd')#设置'dd'为当前项listWidgetselectedItems() #返回一个包含item对象 的list 对象itemsetText('dsds') # 设置item的内容为dsdsitem为对象 可从 listWidgetitem(row) takeItem(row) 得到

QListWidget的用法

setSelectionMode()#设置list一次最多可以选择多少item#有两种方法来listwidget中添加Item:#一种是在item构造时候,指定父widget,#如果item构造时候QListWidget已经存在,可以用下面的方法new QListWidgetItem(tr("Oak"), listWidget);#第二种方法是构造完item,在使用QListWidget::addItem()来添加item#向QListWidget中指定的位置插入item,使用QListWidget::insertItem(int , QListWidgetItem)#使用QListWidget::count()来统计widget中总共的item数目#使用QListWidget::takeItem(int index)来删除表中的某一项#设置当前的item是第几行,QListWidget::setCurrentRow ( int row )#设置list是否可以自动排序QListWidget::setSortingEnabled(bool),默认是FALSE

可以,你可以参考assitant中的说明

void QListWidget::setItemWidget(QListWidgetItem item, QWidget widget)

Sets the widget to be displayed in the given item

This function should only be used to display static content in the place of a list widget item If you want to display custom dynamic content or implement a custom editor widget, use QListView and subclass QItemDelegate instead

上面的翻译:

该函数应该只用来在一个list widget item位置显示静态内容。如果你想要显示自定义动态内容或实现一个自定义编辑控件,使用QListView和子类化QItemDelegate代替。

连接QListWidget的信号void itemDoubleClicked(QListWidgetItem item)到指定的槽。

然后将要执行的 *** 作写到对应的槽中。

当选择其中一项后,使用currentItem ()得到当前项目:

QListWidgetItem item = listWidgetcurrentItem ();

QStrig path = item->text();//获取当前选择的目录|文件

Qlistwidget 滚动条问题

修改该目录下makefile文档。

添加如下内容:obj-$(CONFIG_MTD_flashtest) += flashtesto

这样,当您运行make menucofnig时,您将发现ap71 flash选项,假如您选择了此项。该选择就会保存在config文档中。当您编译内核时,将会读取config文档,当发现ap71 flash 选项为yes 时,系统在调用/driver/mtd/maps/下的makefile 时,将会把 flashtesto 加入到内核中。即可达到您的目的。

qt让listwidgetitem成为某个对象的父类方法:

1创建QObject对象

2创建QListWidgetItem对象

3将QObject对象设置为QListWidgetItem对象的父级

4在需要使用QObject对象的地方,使用data函数获取QListWidgetItem的userData,并将其强制转换为QObject指针类型。

Qt 是一个1991年由QtCompany开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序。

自定义一个Item

新建一个QWidget对象

在QWidget内添加Layout

在Layout内添加要的控件

为QWidget设置Layout

新建一个QListWidgetItem并调整大小

为QListWidgetItem设置QWidget

创建布局

首先我们创建一个最基本的布局, 只有一个listWidget和一个pushButton

实现点击button后在listWidget中添加数据

class Windows(QMainWindow, Ui_MainWindow):

    def __init__(self):

        super(Windows, self)__init__()

        selfsetupUi(self)

        selfpushButtonclickedconnect(selfdeal)

    def deal(self):

        # 准备实现的功能

        pass

app = QtWidgetsQApplication(sysargv)

windows = Windows()

windowsshow()

sysexit(appexec_())

可以看出此布局总体是一个横向布局(QHBoxLayout), 再其右边是一个纵向(QVBoxLayout), 下面的布局又是一个横向布局(QHBoxLayout)

def get_item():

    # 总Widget

    wight = QWidget()

    # 布局

    layout_main = QHBoxLayout()  # 总体横向布局

    layout_right = QVBoxLayout()  # 右边的纵向布局

    layout_right_down = QHBoxLayout()  # 右下的横向布局

    layout_rightaddLayout(layout_right_down)  # 右下布局填充到右边布局中

    layout_mainaddLayout(layout_right)  # 右边布局填充入总布局

    wightsetLayout(layout_main)  # 为Widget设置总布局{

"ship_name": "胡德",

"ship_country": "E国",

"ship_star": "5",

"ship_index": "1",

"ship_photo": "1png",

"ship_type": "战巡"}def get_item_wight(data):

    # 读取属性

    ship_name = data['ship_name']

    ship_photo = data['ship_photo']

    ship_index = data['ship_index']

    ship_type = data['ship_type']

    ship_country = data['ship_country']

    ship_star = data['ship_star']

    # 总Widget

    wight = QWidget()

    # 总体横向布局

    layout_main = QHBoxLayout()

    map_l = QLabel()  # 头像显示

    map_lsetFixedSize(40, 25)

    maps = QPixmap(ship_photo)scaled(40, 25)

    map_lsetPixmap(maps)

    # 右边的纵向布局

    layout_right = QVBoxLayout()

    # 右下的的横向布局

    layout_right_down = QHBoxLayout()  # 右下的横向布局

    layout_right_downaddWidget(QLabel(ship_type))

    layout_right_downaddWidget(QLabel(ship_country))

    layout_right_downaddWidget(QLabel(str(ship_star) + "星"))

    layout_right_downaddWidget(QLabel(ship_index))

    # 按照从左到右, 从上到下布局添加

    layout_mainaddWidget(map_l)  # 最左边的头像

    layout_rightaddWidget(QLabel(ship_name))  # 右边的纵向布局

    layout_rightaddLayout(layout_right_down)  # 右下角横向布局

    layout_mainaddLayout(layout_right)  # 右边的布局

    wightsetLayout(layout_main)  # 布局给wight

    return wight  # 返回wight设置QListWidgetItem

for ship_data in YOUR_DATA:

    item = QListWidgetItem()  # 创建QListWidgetItem对象

    itemsetSizeHint(QSize(200, 50))  # 设置QListWidgetItem大小

    widget = get_item_wight(ship_data)  # 调用上面的函数获取对应

    selflistWidgetaddItem(item)  # 添加item

    selflistWidgetsetItemWidget(item, widget)  # 为item设置widget

显示效果:

以上就是关于QT开发 QListWidget点击返回行号的问题全部的内容,包括:QT开发 QListWidget点击返回行号的问题、QListView和QListWidget的区别、Qt的ListView或ListWidget可不可以添加控件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9740762.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存