2016-10-29 3 views
0

Я изучаю использование Qt, и я хочу расширить пример терминала Qt. Я хочу использовать его console.cpp в QWidget со вкладки Containers в редакторе Design.Qt - установить QWidget с классом QWidget

В Терминале примере Qt, этот класс используется следующим образом:

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

Но, как я хочу, чтобы использовать его в меньшем QWidget я не знаю, как это сделать, какой метод я могу использовать в качестве эквивалента setCentralWidget для моего QWidget? Image of the Design tab with the widget I want to set to the QWidget class

Могу ли я использовать тот же QWidget на нескольких вкладках?

Код console.cpp является следующим.

#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) 
} 

The Qt примера это один: http://doc.qt.io/qt-5/qtserialport-terminal-example.html

спасибо!

+0

Вы знаете, как вы будете использовать, скажем, 'QTextEdit' внутри другого виджета? Если нет, то подумайте о том, чтобы потратить немного времени на изучение основ Qt. Я лично считаю учебник [Адресная книга] (http://doc.qt.io/qt-5/tutorials-addressbook.html) очень точным и кратким, демонстрируя, как собрать пользовательский интерфейс и как свяжите компоненты вместе. Даже если вы используете Designer, вам все равно нужно знать материалы, включенные в этот учебник, чтобы понять, что происходит в вашей программе. – hyde

ответ

0

Если вы хотите добавить его через конструктора, просто продвигайте QWidget, который вы добавили в свой screegrab. (Щелкните правой кнопкой мыши> «Содействовать ...»> Заполните имя & путь к заголовку консоли).

Или не использовать продвижение, вы можете добавить консоль в макет в коде:

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