2016-10-29 2 views
0

Ich lerne, Qt zu verwenden, und ich möchte das Terminal-Beispiel von Qt erweitern. Ich möchte seine console.cpp in einem QWidget von der Container-Registerkarte im Design-Editor verwenden.Qt - setze QWidget mit einer QWidget-Klasse

In dem Terminal Beispiel von Qt, diese Klasse wie folgt verwendet:

ui->setupUi(this); 
console = new Console; 
console->setEnabled(false); 
setCentralWidget(console); 

Aber wie ich es in einem kleineren QWidget verwendet werden soll, weiß ich nicht, wie es eingerichtet, welches Verfahren kann ich Verwenden Sie als SetCentralWidget für mein QWidget? Image of the Design tab with the widget I want to set to the QWidget class

Kann ich das gleiche QWidget auch in mehreren Tabs verwenden?

Der console.cpp-Code ist der folgende.

#include "console.h" 

#include <QScrollBar> 

#include <QtCore/QDebug> 

Console::Console(QWidget *parent) 
    : QPlainTextEdit(parent) 
    , localEchoEnabled(false) 
{ 
    document()->setMaximumBlockCount(100); 
    QPalette p = palette(); 
    p.setColor(QPalette::Base, Qt::black); 
    p.setColor(QPalette::Text, Qt::green); 
    setPalette(p); 

} 

void Console::putData(const QByteArray &data) 
{ 
    insertPlainText(QString(data)); 

    QScrollBar *bar = verticalScrollBar(); 
    bar->setValue(bar->maximum()); 
} 

void Console::setLocalEchoEnabled(bool set) 
{ 
    localEchoEnabled = set; 
} 

void Console::keyPressEvent(QKeyEvent *e) 
{ 
    switch (e->key()) { 
    case Qt::Key_Backspace: 
    case Qt::Key_Left: 
    case Qt::Key_Right: 
    case Qt::Key_Up: 
    case Qt::Key_Down: 
     break; 
    default: 
     if (localEchoEnabled) 
      QPlainTextEdit::keyPressEvent(e); 
     emit getData(e->text().toLocal8Bit()); 
    } 
} 

void Console::mousePressEvent(QMouseEvent *e) 
{ 
    Q_UNUSED(e) 
    setFocus(); 
} 

void Console::mouseDoubleClickEvent(QMouseEvent *e) 
{ 
    Q_UNUSED(e) 
} 

void Console::contextMenuEvent(QContextMenuEvent *e) 
{ 
    Q_UNUSED(e) 
} 

Das Qt Beispiel ist dieses: http://doc.qt.io/qt-5/qtserialport-terminal-example.html

Thanks so much!

+0

Wissen Sie, wie Sie verwenden würden, sagen wir, 'QTextEdit' in einem anderen Widget? Wenn nicht, dann sollten Sie ein wenig Zeit damit verbringen Qt-Grundlagen zu lernen. Ich persönlich halte das [Adressbuch-Tutorial] (http://doc.qt.io/qt-5/tutorials-addressbook.html) für sehr kurz und prägnant und zeige, wie man eine UI zusammenstellt und wie Binde die Komponenten zusammen. Auch wenn Sie Designer verwenden, müssen Sie immer noch wissen, was in diesem Tutorial behandelt wird, um zu verstehen, was in Ihrem Programm vor sich geht. – hyde

Antwort

0

Wenn Sie es über Designer hinzufügen möchten, fördern Sie einfach das QWidget, das Sie in Ihrem screegrab hinzugefügt haben. (Rechtsklick> "Promote to ..."> Geben Sie den Namen & Pfad zum Konsolenkopf ein).

oder nicht Förderung verwenden, können Sie die Konsole mit einem Layout im Code hinzufügen:

Console* console = new Console(); 
ui->your_layout_name_here->addWidget(console);