首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法用ui-> textEdit ->setText(消息)写入textEdit框

无法用ui-> textEdit ->setText(消息)写入textEdit框
EN

Stack Overflow用户
提问于 2016-11-03 17:51:10
回答 1查看 390关注 0票数 0

我试图将传递给mainwindow.cpp函数的数据与典型的

ui->control->setText(消息),但没有成功。如果是在计时器循环或按钮函数中,而不是从display_that_data函数中,则同一行工作。

"MainWindow::display_that_data()“通过以下行从myudp.cpp调用

代码语言:javascript
复制
    MainWindow show_tlm;
    show_tlm.display_that_data(data_source, buf_copy);

mainwindow.cpp (更新为包括为信号/时隙连接发射信号)信号/时隙连接在构造函数中设置如下行

代码语言:javascript
复制
    connect (this, SIGNAL (showdata_signal()), this, SLOT(showdata_slot()));



    void MainWindow::display_that_data(QByteArray data_source, QByteArray tlmBuf){
        QString msg ;
        msg = " in display_that_data";
        qDebug() << msg  ;
        ui->tlm_vals->setText(msg);
        //generate a signal which will trigger showdata_slot
        emit showdata_signal();
        msg = " in display_that_data after  emit showdata_signal()";
        qDebug() << msg  ;
    }

    void MainWindow::showdata_slot() {
        QString msg = "showdata_slot called";
        qDebug() << msg ;
        ui->tlm_vals->setText(msg);
    }

运行时调试消息显示,代码正在将其写入showdata_slot,但仍未写入ui->tlm_vals。

“in display_that_data”

"showdata_slot呼唤“

“在display_that_data中,发出showdata_signal()后”

但是..。没有一个ui ->tlm_vals>setText(Msg)行将文本放在ui上。

"MainWindow::realtimeDataSlot()“由计时器超时信号调用,如下所示:

代码语言:javascript
复制
    void MainWindow::setupRealtimeDataDemo(QCustomPlot *customPlot) {
        // setup a timer that repeatedly calls MainWindow::realtimeDataSlot
        connect(&dataTimer, SIGNAL(timeout()), this, SLOT(realtimeDataSlot()));
        dataTimer.start(1000); 
    }

    void MainWindow::realtimeDataSlot(){
        QString temp = QString("%1").arg(epochTime, 10,  10, QChar('0'));
        ui->tlm_vals->setText(temp);
    }

而且这是完美的(当然,我必须禁用它来查看showdata_slot是否正在写入ui)。

我认为问题是需要一个信号和插槽连接来触发对ui的写入,但是生成信号/时隙连接(调试显示为工作)仍然不会从槽函数写入ui。

为了完整起见,mainwindow.h包含以下内容

代码语言:javascript
复制
    public:
        explicit MainWindow(QWidget *parent = 0);
        ~MainWindow();
        void setupRealtimeDataDemo(QCustomPlot *customPlot);
        void display_that_data (QByteArray data_source, QByteArray tlmBuf);
    private slots:
        void realtimeDataSlot();
        void showdata_slot();
    private:
        Ui::MainWindow *ui;
        QTimer dataTimer;

我错过了什么/做错了什么?

EN

回答 1

Stack Overflow用户

发布于 2016-11-04 17:22:31

在Qt中的某个地方,gui鼠标单击生成的事件和代码生成的事件之间有一个区别,而这种caues行为随代码行的不同而有所不同。我将在这个主题上重新发布一个更多的“根级”问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40408166

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档