Разворачивающиеся панели, как в 3ds Max(скрин прилагаеццо :) ) |
Здравствуйте, гость ( Вход | Регистрация )
Разворачивающиеся панели, как в 3ds Max(скрин прилагаеццо :) ) |
0xF |
17.3.2008, 14:44
Сообщение
#1
|
|
Студент Группа: Участник Сообщений: 71 Регистрация: 12.11.2007 Пользователь №: 20 Спасибо сказали: 0 раз(а) Репутация: 0 |
Как замутить вот такие панели на Qt(Object Type, Name and Color etc.)?
Там есть похожий контрол(QToolBox), но он показывает только одну развернутую страницу(как только открываешь одну - закрывается другая), а мне нужно шо можно было одновременно несколько открывать. Как замутить? Может есть готовое решение? Сообщение отредактировал 0xF - 17.3.2008, 14:45 |
|
|
||
Litkevich Yuriy |
17.3.2008, 23:02
Сообщение
#2
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
пример от Макса Шлее:
main.cpp: CODE #include <QtGui> #include "CustomWidget.h" // ---------------------------------------------------------------------- int main(int argc, char** argv) { QApplication app(argc, argv); QWidget wgt; CustomWidget* pcw = new CustomWidget; QScrollBar* phsb = new QScrollBar(Qt::Horizontal); phsb->setRange(0, 100); QObject::connect(phsb, SIGNAL(valueChanged(int)), pcw, SLOT(slotSetProgress(int)) ); //Layout setup QVBoxLayout* pvbxLayout = new QVBoxLayout; pvbxLayout->addWidget(pcw); pvbxLayout->addWidget(phsb); wgt.setLayout(pvbxLayout); wgt.show(); return app.exec(); } CustomWidget.h: CODE #ifndef _CustomWidget_h_ #define _CustomWidget_h_ #include <QFrame> // ====================================================================== class CustomWidget : public QFrame { Q_OBJECT protected: int m_nProgress; virtual void paintEvent(QPaintEvent*); public: CustomWidget(QWidget* pwgt = 0); virtual QSize sizeHint() const; signals: void progressChanged(int); public slots: void slotSetProgress(int n); }; #endif //_CustomWidget_h_ CustomWidget.cpp: CODE #include <QtGui> #include "CustomWidget.h" // ---------------------------------------------------------------------- CustomWidget::CustomWidget(QWidget* pwgt/*= 0*/) : QFrame(pwgt) , m_nProgress(0) { setLineWidth(3); setFrameStyle(Box | Sunken); setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed); } // ---------------------------------------------------------------------- /*virtual*/ void CustomWidget::paintEvent(QPaintEvent*) { QPainter painter(this); QLinearGradient gradient(0, 0, width(), height()); float f = m_nProgress / 100.0f; gradient.setColorAt(0, Qt::black); gradient.setColorAt(f, Qt::green); painter.fillRect(rect(), Qt::black); painter.setBrush(gradient); painter.drawRect(0, 0, (int)(width() * f), height()); painter.setPen(QPen(Qt::green)); QString str = QString().setNum(m_nProgress) + "%"; painter.drawText(rect(), Qt::AlignCenter, str); drawFrame(&painter); } // ---------------------------------------------------------------------- void CustomWidget::slotSetProgress(int n) { m_nProgress = n > 100 ? 100 : n < 0 ? 0 : n; repaint(); emit progressChanged(m_nProgress); } // ---------------------------------------------------------------------- /*virtual*/ QSize CustomWidget::sizeHint() const { return QSize(200, 30); } он жестко задал размер Сообщение отредактировал Litkevich Yuriy - 17.3.2008, 23:03 |
|
|
Текстовая версия | Сейчас: 7.1.2025, 18:15 |