1

ここの初心者。「さらに追加」ボタンまたはリンクをクリックするたびに、新しい lineEdit フィールドが下部に表示されるように、ドックウィジェットに GUI 効果を持たせたいと考えています。

多くのソフトウェアに次のようなものがあるのを見ました

point-1 (_____,_____)
point-2 (_____,_____)
+ Add More Points

「 」をクリックする+ Add More Pointsと、新しい point-3 が表示され、入力を待ちます。

私が今持っているコードは次のようなものです:

#include "perfectPanel.hpp"

perfectPanel::perfectPanel(QWidget *parent) : QWidget(parent)
{
    setupUi(this);
    readInfo();

    connect
    (
        btn_accept,
        SIGNAL(clicked()),
        this,
        SLOT(readInfo()),
        Qt::UniqueConnection
    );
}

// Destructor
perfectPanel::~perfectPanel()
{}

void perfectPanel::readInfo()
{
    xObject_ = vtkDoubleArray::New();
    yObject_ = vtkDoubleArray::New();
    xObject_->InsertNextValue( lineEdit_xObject01X->text().toDouble() );
    xObject_->InsertNextValue( lineEdit_xObject02X->text().toDouble() );
    yObject_->InsertNextValue( lineEdit_yObject01Y->text().toDouble() );
    yObject_->InsertNextValue( lineEdit_yObject02Y->text().toDouble() );
}
4

1 に答える 1

1

+ Add More PointsそのボタンをperfectPanelクラスに追加する必要があります。クラスのプライベート データ セクションで次の宣言を使用して、既にそれを行っているとしましょう。

QPushButton* m_AddPoint;

次に、ボタンのclicked()信号をスロットに接続してポイントを追加します。サンプル コードから、これを行う方法を既に知っているように見えるので、詳細には触れません。ボタンのクリック イベントをaddPoint関数に接続したとします。

void perfectPanel::addPoint()
{
    /* The "this" argument is needed to prevent memory leaks */
    QLineEdit* Field = new QLineEdit(this);

    /* Your perfectPanel class has some layout where the existing LineEdit rows
       are. I'm assuming m_Layout is a pointer to that layout here. */
    m_Layout->addWidget(Field);
    Field->show();
}
于 2013-01-04T16:05:57.660 に答える