Хотел б создать виджет с функциональностю как в Qt Creator -> Projects -> Build Step, Clean Step,...
Тойсть нужно сначали видеть короткую информацию, а при нажатие на кнопку Details откроеться более подробное описания с полями и кнопками для ее изменения. С каких компонент должен складаться такой виджет?
Из любых... Просто управляешь видимостью нужного тебе виджета с помощью 
QWidget::setVisible(bool visible);Примерно так:
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());
}