
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可不可以添加控件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)