Хотел б создать виджет с функциональностю как в Qt Creator -> Projects -> Build Step, Clean Step,...
Тойсть нужно сначали видеть короткую информацию, а при нажатие на кнопку Details откроеться более подробное описания с полями и кнопками для ее изменения. С каких компонент должен складаться такой виджет?
Хотел б создать виджет с функциональностю как в Qt Creator -> Projects -> Build Step, Clean Step,...
Тойсть нужно сначали видеть короткую информацию, а при нажатие на кнопку Details откроеться более подробное описания с полями и кнопками для ее изменения. С каких компонент должен складаться такой виджет?
Из любых... Просто управляешь видимостью нужного тебе виджета с помощью QWidget::setVisible(bool visible); (http://developer.qt.nokia.com/doc/qt-4.8/qwidget.html#visible-prop)
Примерно так:
main.cpp:
C++ (Qt)
#include <QtGui/QApplication>
#include "mainwindow.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow *m = new MainWindow;
m->show();
return a.exec();
}
mainwindow.h:
C++ (Qt)
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
class QFrame;
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
signals:
public slots:
void onPushButtonPushed();
private:
QFrame *frame2;
};
#endif // MAINWINDOW_H
mainwindow.cpp:
C++ (Qt)
#include "mainwindow.h"
#include <QPushButton>
#include <QLabel>
#include <QLineEdit>
#include <QFrame>
#include <QComboBox>
#include <QVBoxLayout>
#include <QDialog>
#include <QGroupBox>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent)
{
QVBoxLayout *layout = new QVBoxLayout;
QWidget *centralWidget = new QWidget;
QFrame *frame = new QFrame();
QHBoxLayout *layout2 = new QHBoxLayout();
QPushButton *button = new QPushButton;
QVBoxLayout *layout3 = new QVBoxLayout;
centralWidget->setLayout(layout);
setCentralWidget(centralWidget);
frame->setLayout(layout2);
button->setText(QObject::tr("Push me!"));
layout2->addWidget(new QLabel(QObject::tr("short info: bla-bla-bla...")));
layout2->addSpacerItem(new QSpacerItem(0, 0, QSizePolicy::Expanding));
layout2->addWidget(button);
frame2 = new QFrame;
frame2->setLayout(layout3);
layout3->addWidget(new QLabel(QObject::tr("any widgets")));
layout3->addWidget(new QLineEdit);
layout3->addWidget(new QLineEdit);
layout->addWidget(frame);
layout->addWidget(frame2);
layout->addWidget(new QLabel(QObject::tr("always visible")));
layout->addSpacerItem(new QSpacerItem(0,0, QSizePolicy::Minimum, QSizePolicy::Expanding));
connect(button, SIGNAL(clicked()), this, SLOT(onPushButtonPushed()));
}
void MainWindow::onPushButtonPushed()
{
frame2->setVisible(!frame2->isVisible());
}