QT 怎么让qtablewidget选中某个单元格的item然后得到是点的哪个Item

QT 怎么让qtablewidget选中某个单元格的item然后得到是点的哪个Item,第1张

tableWidget_itemClicked(QTableWidgetItem item)

这里的item就是单击的项

还有获取当前项: ui->tableWidget->currentItem();

1、HeatUser类

class HeatUser

{

public:

    HeatUser(){

    }

    HeatUser(QString name, float flow, float distance, short time){

        strcpy(Name, nametoLocal8Bit()data());

        Flow = flow;

        Distance = distance;

        Time = time;

    }

    ~HeatUser(){

    }

    QString getName(){

        return Name;

    }

    QString getFlow(){

        return QString("%1")arg(Flow);

    }

    QString getDistance(){

        return QString("%1")arg(Distance);

    }

    QString getTime(){

        return QString("%1")arg(Time);

    }

private:

    char Name[30];

    float Flow;

    float Distance;

    short Time;

};

2、对象初始化

    QFile file("aatxt");

    if(fileopen(QIODevice::ReadOnly))

    {

        QTextStream stream(&file);

        while(!streamatEnd())

        {

            QStringList list = streamreadLine()split(QRegExp("\\s+"));

            HeatUser hUser(listat(0), static_cast<QString>(listat(1))toFloat(),

                           static_cast<QString>(listat(2))toFloat(),

                           static_cast<QString>(listat(3))toShort());

            vecpush_back(hUser);

        }

    }

3、文件内容

aa  1260   226    99

bb   1650   236    100

4、写入Qtablewidget

    ui->tableWidget->setRowCount(2);     //设置行数为2

    ui->tableWidget->setColumnCount(4);   //设置列数为4

    QStringList header;

    header << "Name" << "Flow" << "Distance" << "Time";

    ui->tableWidget->setHorizontalHeaderLabels(header);

    for(int i = 0; i < veccount(); i++)

    {

        ui->tableWidget->setItem(i,0,new QTableWidgetItem(vec[i]getName()));

        ui->tableWidget->setItem(i,1,new QTableWidgetItem(vec[i]getFlow()));

        ui->tableWidget->setItem(i,2,new QTableWidgetItem(vec[i]getDistance()));

        ui->tableWidget->setItem(i,3,new QTableWidgetItem(vec[i]getTime()));

    }

给你说下大概的流程吧 textedit按行读取 然后建立一个qstring的容器 读取各行数据 按钮点击后进行排序 然后把数据输出到textbrowser 其实没必要这样用 直接建立一个qtablewidget 输入内容后点击headeritem 应该直接就可以排序的

QTableWidget中QComboBox的值的取法和单独QComBox是一样的。

可以参照以下的代码段:

QTableWidget table = new QTableWidget(3,3,this);

QLineEdit edit = new QLineEdit(this);

QComboBox box = new QComboBox(this); //先建一个控件,之后取值就直接使用它就可以了

box->addItem("yes");

box->addItem("no");

// box->setCurrentIndex(1); //此处解开注释的话下面会输出 no

table->setCellWidget(1,1,edit);

table->setCellWidget(2,2,box);

if(0 == box->currentIndex())qWarning()<<"yes";

if(1 == box->currentIndex())qWarning()<<"no";

QWidget widget=ui->tableWidget->cellWidget(i,0);//获得widget

QComboBox combox=(QComboBox)widget;//强制转化为QComboBox

QString string=combox->currentText();

qDebug()<<string;

双击修改后QTableWidget会发送一个信号:void itemChanged ( QTableWidgetItem item )

你可以在代码中为这个信号写一个槽函数:void slotItemChanged( QTableWidgetItem item );

然后连接:比如有个QTableWidget的指针tabWidget,connect(tabWidget, SIGNAL(itemChanged(QTableWidgetItem )), this/槽函数是某个类的成员函数/, SLOT(slotItemChanged(QTableWidgetItem)));

然后再槽函数中通过item的获取数据函数获取修改后的内容

以上就是关于QT 怎么让qtablewidget选中某个单元格的item然后得到是点的哪个Item全部的内容,包括:QT 怎么让qtablewidget选中某个单元格的item然后得到是点的哪个Item、QT 读取文件写入Qtablewidget中、Qt中如何在第一个文本框获取内容,然后在第二个文本框输出等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/web/9394481.html

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

发表评论

登录后才能评论

评论列表(0条)

保存