Russian Qt Forum
Май 11, 2024, 22:16 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Какие виджети нужно использовать  (Прочитано 2441 раз)
kobra
Гость
« : Февраль 08, 2012, 20:51 »

Хотел б создать виджет с функциональностю как в Qt Creator -> Projects -> Build Step, Clean Step,...
Тойсть нужно сначали видеть короткую информацию, а при нажатие на кнопку Details откроеться более подробное описания с полями и кнопками для ее изменения. С каких компонент должен складаться такой виджет?
Записан
Kurles
Бывалый
*****
Offline Offline

Сообщений: 480



Просмотр профиля
« Ответ #1 : Февраль 09, 2012, 00:41 »

Хотел б создать виджет с функциональностю как в 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());
}
 
 
Записан

Код
C++ (Qt)
while(!asleep()) sheep++;
TaIRou
Гость
« Ответ #2 : Февраль 09, 2012, 21:52 »

или нагло возьми его
qt-creator-2.0.1-src\src\libs\utils\detailswidget.h
qt-creator-2.0.1-src\src\libs\utils\detailswidget.cpp
не забудь о возможных зависимостях.
« Последнее редактирование: Февраль 09, 2012, 21:55 от TaIRou » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.153 секунд. Запросов: 23.