2016-06-11 9 views
1

Qtとコーディングを学び始めました。私は練習のために、基本的なプロジェクトを念頭に置いています。私は、CPPに始めていますので、QPushButton - ライン編集ボックスにテキストの文字列をプッシュボタンで追加する方法

New Screenshot

ベア私と一緒にしてください:ここでは

は私の小さなUIのPICがあります。

私はQPushButtonをクリックした後、この文字列 - > "text"をテキストボックス内に追加したいと思います。

2回クリックすると "texttext"などが表示されます。

私は答え、この質問を見てきました: QT creating push buttons that add text to a text edit box

解決策は、私はちょうど私のプロジェクトに統合する方法を理解していない、私は必要なものがあるように思わ述べました。

助けることができる人はいますか?

私はこれまでのところ、これらのファイルを持っている:

test.pro:

QT  += core gui 
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 
TARGET = test 
TEMPLATE = app 
SOURCES += main.cpp\ 
    mainwindow.cpp 
HEADERS += mainwindow.h 
FORMS += mainwindow.ui 

mainwindow.h:

class MainWindow : public QMainWindow 
{ 
    Q_OBJECT 

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

private slots: 
    void addTextTolable(); 

private: 
    Ui::MainWindow *ui; 
}; 

#endif // MAINWINDOW_H 

main.cppに:

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

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

    return a.exec(); 
} 

とメインウィンドウを.cpp

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

MainWindow::MainWindow(QWidget *parent) : 
    QMainWindow(parent), 
    ui(new Ui::MainWindow) 
{ 
    ui->setupUi(this); 
    connect(ui->pushButton, SIGNAL(clicked(bool)), this, SLOT(this- >addTextToLabel())); 
} 

void MainWindow::addTextTolable() 
{ 
    ui->textEdit->appendPlainText("test"); 
} 

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

この私が

mainwindow.cpp:-1: In member function 'void MainWindow::addTextTolable()': 
mainwindow.cpp:14: error: 'class QTextEdit' has no member named 'appendPlainText' 
    ui->textEdit->appendPlainText("test"); 
       ^

答えて

1

を持っている最後のエラーは、コーディングC++とQtに歓迎です!それは楽しいですが、多くのことが進行中です。私はあなたの既存のものを説明するために修正するために最善を尽くします。 QObjectから継承されたクラスは、Qtのシグナル/スロットアーキテクチャを通じてシグナルを相互に送信します。それで、これはあなたがすることです。

1.)メインウィンドウのヘッダーファイルでスロット機能を宣言します。これは、スロット:タブの下に置かれている以外は、通常の関数宣言に過ぎません。

2)ので、ここで変更されたコードだのQPushButtonの通常メインウィンドウのコンストラクタで、メインウィンドウのスロットに「(ブール値)をクリックし、」

からの信号を接続します。

mainwindow.h:

#ifndef MAINWINDOW_H 
#define MAINWINDOW_H 

#include <QMainWindow> 

namespace Ui { 
class MainWindow; 
} 

class MainWindow : public QMainWindow 
{ 
    /*IMPORTANT NOTE: Q_OBJECT must appear in the beginning of the header of any object you want to use signals/slots for*/ 
    Q_OBJECT 

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

/*Declare the function to be called when the QPushButton is clicked*/ 
private slots: 
    void addTextToLabel(); 

private: 
    Ui::MainWindow *ui; 
}; 

#endif // MAINWINDOW_H 

main.cppに:

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

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

    return a.exec(); 
} 

とメインウィンドウ。cpp

何かが間違っているか、それ以上質問がある場合は、そのショットを付けてお知らせください。

+0

私はすべてのいくつかのエラーを考え出しました、ちょうど最後のものは私が取り除かれたように見えません。私はそれに応じて自分の投稿を更新した。あなたが助ける時間があれば素晴らしいでしょう:) – Shamon

+0

ああ、はい。 QTextEditにはそのメソッドが含まれず、QPlainTextEditだけが含まれます。 " - > textEdit-> setText(ui-> textEdit-> toPlainText()+" test ");"を使用して、 "ui-> plainTextEdit-> appendPlainText(" test ")" –

+0

"appendPlainText"の代わりに "append"を指定すると、エラーを取り除くことができます。わーい!私は新しいものを持っています: "QObject :: connect:このようなスロットはありませんMainWindow :: this-> addTextToLabel()in .. \ test \ mainwindow.cpp:10" --- "QObject :: connect:(送信者名:QObject :: connect:(受信者名: 'MainWindow') "アプリケーションは今実行されますが、ボタンはボックスにテキストを追加しません。 – Shamon

関連する問題