gpt4 book ai didi

c++ - 用户界面不在 qt 应用程序中更新

转载 作者:行者123 更新时间:2023-11-28 06:18:44 24 4
gpt4 key购买 nike

在上面的代码中,uitablewidget 没有使用信号和插槽进行更新。似乎 (ui->tableWidget->setItem(0,0,newItemx);) 不起作用。我做错了什么或者有更好的方法从我的 B 类更新我的 qtablewidget 吗?

Class_A::Class_A(QWidget *parent):QDialog(parent),ui(new Ui::Class_A)
{
ui->setupUi(this);

}

Class_A::~Class_A()
{
delete ui;
}


void Class_A::change_TableWidget(double x,double y) // this is the public slot
{
QTableWidgetItem *newItemx = new QTableWidgetItem(QString::number(x));
ui->tableWidget->setItem(0,0,newItemx);
QTableWidgetItem *newItemy = new QTableWidgetItem(QString::number(y));
ui->tableWidget->setItem(0,0,newItemy);
}




Class_B::Class_B(QWidget *parent) :
QGLWidget(parent)
{
Class_A *t=new Class_A;
connect(this,SIGNAL(mySignal(double,double)),t,SLOT(change_TableWidget(double,double)));
}


void Class_B::mousePressEvent(QMouseEvent *event)
{
double x = event->x();
double y = event->y();
emit mySignal(x,y);
}

最佳答案

您没有 SLOT(change_TableWidget(double,double)) - 您需要 3 个 double ,而不是两个。

您应该检查 connect() 是否返回 true。我喜欢写东西如果 (!connect(....)) Q_ASSERT(false);

或者 if (!connect(....)) Q_ASSERT(!"connect");

此外,连接在无法匹配信号和槽时将消息打印到调试输出。你应该寻找那个输出。

(或者使用新的Qt 5 connect(),编译时全部检查。)

关于c++ - 用户界面不在 qt 应用程序中更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29719716/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com