【问题标题】:Bogus widget in Qt CreatorQt Creator 中的虚假小部件
【发布时间】:2014-11-22 18:36:21
【问题描述】:

我是 Qt 新手,使用 Qt Creator 3.1.2 (Ubuntu Linux)、Qt 5.3.1。

我的程序有一个带有按钮 (pushButton) 的表单,该按钮在按下时会更改文本字段 (plainTextEdit) 的值。 pushButtonplainTextEdit 都以图形模式添加。按钮与其插槽 (on_pushButton_clicked()) 之间的连接也已通过图形界面建立。

问题是,程序在左上角生成了一个伪造的plainTextEdit,即不同的plainTextEdit,而“主要”则保持干净。因此,问题是,我怎样才能避免它?一般来说,我应该如何在代码中连接图形小部件及其对应物?这是我的程序:

ma​​inwindow.h:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QPushButton>
#include <QPlainTextEdit>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow 
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

public slots:
    void on_pushButton_clicked();

private:
    Ui::MainWindow *ui;

    QPushButton *pushButton;
    QPlainTextEdit *plainTextEdit;
};

#endif // MAINWINDOW_H

ma​​in.cpp

#include "mainwindow.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    return a.exec();
}

ma​​inwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    plainTextEdit = new QPlainTextEdit(this);
    // whenever I remove the previous line, I get SIGSEGV
    setWindowTitle(tr("My test app..."));
}

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

void MainWindow::on_pushButton_clicked()
{
    plainTextEdit->setPlainText("Some text here");
}

【问题讨论】:

    标签: qt


    【解决方案1】:

    这是您在构造函数中创建的“虚假”小部件。您在表单编辑器中创建的小部件属于Ui::MainWindow,您不得在主窗口中重新创建它们。

    从您的 MainWindow 中删除它:

    QPushButton *pushButton;
    QPlainTextEdit *plainTextEdit;
    

    从构造函数中删除小部件的创建:

    plainTextEdit = new QPlainTextEdit(this);
    

    将您的on_pushButtonClicked 成员更改为:

    ui->plainTextEdit->setPlainText("Some text here");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-18
      • 1970-01-01
      • 1970-01-01
      • 2015-02-19
      • 1970-01-01
      • 1970-01-01
      • 2016-11-05
      • 2018-02-25
      相关资源
      最近更新 更多