Qt第一次工作使用到的部分方法总结

List Widget使用

List Widget节点遍历

       for (int i = 0; i < ui->listWidget->count(); i++)
       {
           ui->listWidget->item(i)->操作;
       }

List Widget复选框使用

全选

       //list wigget中的节点不是一定要是复选框,视具体情况具体分析
       for (int i = 0; i < ui->listWidget->count(); i++)
       {
           ui->listWidget->item(i)->setCheckState(Qt::Checked);
       }

清空选择:

       for (int i = 0; i < ui->listWidget->count(); i++)
       {
           ui->listWidget->item(i)->setCheckState(Qt::Unchecked);
       }

List Widget复选框禁用,只能看不能手动修改

	for (int i = 0; i < ui->listWidget_2->count(); i++)
    {
         ui->listWidget_2->itemWidget(ui->listWidget_2->item(i))->setEnabled(false); //展现灰化,不可操作
         ui->listWidget_2->item(i)->setFlags((Qt::ItemFlag)0);
    }

comboBox使用

使comboBox下拉框选定节点跳转

//用作初始化显示位置或者点击某处触发跳转
ui->comboBox->setCurrentIndex(2);//这里的2指复选框里节点的第三个

将数据库查询到的内容选定列加入到comboBox内

QStringList user_list;
QSqlQuery query;
query.exec("SELECT 查询语句");
while (query.next())
{
    user_list << query.value(0).toString();
}
ui->comboBox->addItems(user_list);


tablewidget使用

使tablewidget选定节点跳转

//用作初始化显示位置或者点击某处触发跳转
ui->tabWidget->setCurrentIndex(0);

tablewidget 移除卡片

ui->tabWidget->removeTab(0);//这里的0指第一页

//这里在使用过程中出现一个问题:
//“当先移除页码较小页的时候,后面的页数会自动补上空位”
//也就是说,当想要移除第三页与第六页时,
//如果先ui->tabWidget->removeTab(2);再ui->tabWidget->removeTab(5);一定达不到想要的效果
//但如果先ui->tabWidget->removeTab(5);再ui->tabWidget->removeTab(2);就能够实现移除第三页与第六页

treeWidget使用

使treewidget内容中的子级初始化展开

    ui->treeWidget->expandAll();//定义初始化展开

使treewidget内容中的子级初始化展开并锁死不可收起

    ui->treeWidget->setItemsExpandable(false);//设置不可拉伸
    ui->treeWidget->expandAll();

遍历treewidget内容

    QTreeWidgetItemIterator ip(ui->treeWidget);
    while (*ip)
    {
        {
        操作内容;
        }
        ++ip;
    }

TreeWidget复选框使用

全选:

    QTreeWidgetItemIterator ip(ui->treeWidget);
    while (*ip)
    {
        if ((*ip)->checkState(0) == Qt::Checked)
        {
            (*ip)->setCheckState(0, Qt::Unchecked);
        }
        ++ip;
    }

清空选择:

    QTreeWidgetItemIterator ip(ui->treeWidget);
    while (*ip)
    {
        if ((*ip)->checkState(0) == Qt::Unchecked)
        {
            (*ip)->setCheckState(0, Qt::Checked);
        }
        ++ip;
    }

TreeWidget复选框遍历判断对应节点勾选

没有在网络上查到有效的遍历判断节点勾选的方法,但是在午休做梦的时候突然想到了一个办法

    int a[13] = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41};
    int *arr = a;
    long long x1 = 1;
    QTreeWidgetItemIterator it(ui->treeWidget);
    while (*it)
    {
        if ((*it)->checkState(0) != Qt::Unchecked)
        {
            x1 *= *arr;
        }
        ++it;
        arr++;
    }
    //这里定义了一个全部是素数的数组,遍历了一次treewidget中的节点,判断如果勾选的,乘上对应的素数,如果未勾选,数组往下加一,节点往下加一,这样节点与数组的素数就完全对应上
    //因为素数的关系,素数没有多余的因数,所以如果某个数能除得尽一个素数,一定是有一个与这个素数本身相乘的过程(在我举例的这个全是素数的数组的情况下)
    //举例:如果x1被2整除,那么第一个节点框一定被勾选
    //将这里得到的素数乘积存入数据库,就可以由此得到此时复选框的状态
	LONGLONG y = 0;
    QSqlQuery query;
    query.exec("得到上述素数乘积的数据库查询语句");
    if (query.next())
    {
        y = query.value("上述乘积的名").toLongLong();
    }

    int a[13] = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41};
    int *arr = a;
    QTreeWidgetItemIterator it(ui->treeWidget);
    while (*it)
    {
        if (y % *arr == 0)
            (*it)->setCheckState(0, Qt::Checked);
        else
            (*it)->setCheckState(0, Qt::Unchecked);
        ++it;
        arr++;
    }
//这里的方法还是有使用限制,大家都知道,不断增长的数乘积的成长速度是非常快的,如果乘积长度连longlong都顶不住了
//那就只能换别的办法,比如定义一个数组,勾选了一个,就将数组的一位置一,反之置零,同样数组跟着节点走,应该也是可以实现的
//并且比上述方法好用

checkBox使用

禁用checkbox后并将其设为不可见

        ui->checkBox->setEnabled(false);//禁用
        ui->checkBox->setVisible(false);//不可见

		//适用于权限分割
		//setVisible(false);同样适用于菜单选项与按钮等控件

setVisible(false)使用

//不可见,适用于权限分割

		ui->checkBox->setVisible(false);
		ui->menu->menuAction()->setVisible(false);//菜单不可见,例如:使“开始”不可见
		ui->action_softLog->setVisible(false);//菜单内的选项不可见,例如:使“开始——附件”不可见
		//等等;

QMessageBox使用

跳出设定提示,并可以设定选项回答

	   int ret = QMessageBox::information(this, "询问", "提示", "取消", "确认", nullptr, 1);
	   //询问作为标题,提示写上弹窗的目的,取消与确认作为选项,后面的1是初始化选中的位置
       if (ret == 0)  //判断返回的按钮参数                                                                                                              
       {
           QMessageBox::information(this, "pramater return", "取消修改!");//这里又是一个弹窗
           return;
       }
       else if (ret == 1)
       {
           QMessageBox::information(this, "pramater return", "修改完成!");//弹窗
           query.exec();
       }

初始选中的状态:
在这里插入图片描述

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值