从c++中GUI中创建的对象修改GUI
Modify GUI from object created inside the gui in c++
我想问一下如何在屏幕上添加一些文本。我有一个按钮,当我点击它时,我创建了一个新对象。它有一个功能,为我提供一些数据。我如何从gui访问这些数据?我不能有getter,因为它在一段时间后(在连接到服务器之后)给我数据。是否有可能把文本texttedit内的gui类中创建的对象?
感谢我添加了代码,解释了一点,很抱歉让人困惑,谢谢你的帮助:
我在gui类中创建了EchoClient对象:
void Comunication::startListening(){
if (this->client == NULL)
{
this->client = new EchoClient(QUrl(QStringLiteral("ws://localhost:1234")), 0);
QObject::connect(client, &EchoClient::closed, this, &QApplication::quit);
}
else
qWarning() << "Carefull, the client is already running";
}
然后在我的EchoClient我有功能
void EchoClient::onTextMessageReceived(QString message)
{
if (!m_debug)
qDebug() << "Message received:" << message;
这里我想改变ui的东西
}
是的,有可能。但你的问题目前似乎太宽泛或不清楚(至少)对我来说。我假设您正在使用Qt Creator及其设计器。因此您应该能够访问ui
对象(在您的MainWindow
类中)。有了这个对象,你可以随时随地修改UI。
因此,首先为该文本框(即QLineEdit
)分配一个id(例如myLineEdit
)。现在,ui->myLineEdit
给你一个QLineEdit *
,它实际上是对那个文本框的引用。无论你想在哪更新UI,你都应该有那个引用。例如,如果你正在使用TCP套接字编程来联系远程服务,在QTcpSocket
的onReadyRead
信号中,你可以用你刚刚收到的数据更新文本框:
QLineEdit *textbox = ui->myLineEdit;
textbox->setText("updated data");
我用getter, setter和另一个按钮解决了这个问题
第一个按钮:开始收听…创建EchoClient对象,打开websocket,连接到websocket服务器。如果消息已经从服务器到达,它会从EchoClient类调用ontextmessagerreceived的方法,在那里它将属性消息设置为传入消息的值。
void EchoClient::onTextMessageReceived(QString message)
{
if (!m_debug)
qDebug() << "Message received:" << message;
setData(message); //setting atribute message
}
第二个按钮: get data…这将从EchoClient类调用get方法。通信是我的gui类。
void Comunication::on_getData_clicked()
{
ui->textEdit_2->setText(this->client->getData());
}
但是这个解决方案还不够好,你能告诉我如何使我的textEdit一有新消息就自动更新吗?我应该在另一个线程中做吗?我没有多少经验。
谢谢。
- 什么时候调用组成单元对象的析构函数
- 对RValue对象调用的LValue ref限定成员函数
- CMake-按正确顺序将项目与C运行时对象文件链接
- 空基优化子对象的地址
- 将对象数组的引用传递给函数
- 你能重载对象变量名本身返回的内容吗
- C++使用整数的压缩数组初始化对象
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 在QT GUI中创建一个全局对象
- Qt的GUI线程在从外部对象调用方法时是否会在引擎盖下生成线程?
- 在制作(Qt等)GUI时声明对象
- 在基本的GUI编程中,在哪里声明对象和方法
- 通知 GUI 对象有关屏幕大小的信息 - 设计
- 面向对象编程:在GUI中启动ab对象
- 如何使我的 Windows API GUI 代码更加面向对象
- 正在从另一个进程检索GUI对象
- GUI中的Qt即时对象交互
- 类构造函数中指向QProcess对象的指针导致qt GUI崩溃
- 从c++中GUI中创建的对象修改GUI
- 如何在qt中使用gui对象名运行循环