QTableWidget

1、获取选中行号(可以不连续)

    1、获取Ctrl选中的item
    QList<QTableWidgetSelectionRange> listRange = m_ui->tableWidget->selectedRanges();
    2、可以获取shift按键或鼠标拖动选中范围内的索引
    int size = m_ui->tableWidget->selectedItems().size();
    QVector<int> num;
    for(int i=0;i<listRange;i++)
    {
        num.push_back(listRange.at(i).topRow());;
    }
    qSort(num.begin(),num.end());//降序
    //qSort(num.rbegin(),num.rend());//升序

2、右键操作

1、信号槽
	m_ui->tableWidget->setContextMenuPolicy(Qt::CustomContextMenu);
    QObject::connect(m_ui->tableWidget,&QTableWidget::customContextMenuRequested(QPoint),this,&函数名)
    QMenu *menu = new QMenu(this);
    
2、添加右键列表
    menu->popup(m_ui->tableWidget->viewport()->mapToGlobal(QPoint pos));//在右键出显示列表
    menu->addAction(action_list);//添加列表内容
    popMenu.exec(QCursor::pos());//光标处显示

3、添加checkBox控件
    QCheckBox *checkBox = new QCheckBox(this);
    checkBox->setCheckState(Qt::Unchecked);
    QWidget *widget = new QWidget;
    QBoxLayout *HLayout = new QHBoxLayout;
    HLayout->setSpacing(0);
    HLayout->setMargin(1);
    HLayout->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
    widget->addWidget(HLayout);
    m_ui->tableWidget->setCellWidget(row,column,widget);
4、获取控件
    QWidget * widget = m_ui->tableWidget->cellWidget(row,column);
    QCheckBox *checkBox = qobject_cast<QCheckBox *>(widget->children().at(1));
5、自带的checkBox
	QTableWidgetItem类属性:setCheckState(Qt::Checked);
	如果需要改变勾选框的样式,则需要加入指示器indicator。同理,可以设置QtreeWidgetItem中加入单选框,或者输入框等的QSS样式。
	"QTreeWidget::indicator:checked {image: url(:/Images/xz.png);}"        // 选中
	"QTreeWidget::indicator:unchecked {image: url(:/Images/wxs.png);}"     // 未选中
	"QTreeWidget::indicator:indeterminate {image: url(:/Images/bxz.png);}" // 半选中


QTableWidget属性

    1、m_ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);//自动列宽
    2、m_ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);//整行选中
    3、m_ui->tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);//禁止编辑
    item->setFlags(item->flags() & (~Qt::ItemIsEditable));
  //编辑  
item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsEditable); 
	4、m_ui->tableWidget->verticalHeader()->setSectionResizeMode(QHeaderView::Fixed);//禁止拖动行高
	5、m_ui->tableWidget->setSelectionMode(QAbstractItemView::ContiguousSelection);//多选时选择模式
    6、m_ui->tableWidget->setMouseTracking(true);//使用鼠标事件时需打开
    7、m_ui->tableWidget->selectRow(0);//默认选中第一行
    //设置选中行高亮是需设置颜色,默认颜色不显示
    8、m_ui->tableWidget->setStyleSheet("selection-background-color:rgb(100,100,100)");
    //获取文件绝对路径
    9、QString path = ui.tableWidget->item(row, column)->data(Qt::UserRole + 1).toString();
    //打开文件目录
    10bool ok = QDesktopServices::openUrl(QUrl::fromLocalFile("./Export"));

二、禁止某列编辑
    QTableWidgetItem *item = new QTableWidgetItem;
    item->setFlags(item->flags() & ~Qt::ItemIsEditable);
    item->setTextColor(QColor(100,100,100));
    m_ui->tableWidget.setItem(row,column,item);
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值