]> SALOME platform Git repositories - modules/gui.git/commitdiff
Salome HOME
Add TitleLabel. fix remove
authorViktor UZLOV <vuzlov@debian10-01.nnov.opencascade.com>
Thu, 19 Nov 2020 09:36:47 +0000 (12:36 +0300)
committerViktor UZLOV <vuzlov@debian10-01.nnov.opencascade.com>
Thu, 19 Nov 2020 09:36:47 +0000 (12:36 +0300)
src/Qtx/QtxInfoPanel.cxx
src/Qtx/QtxInfoPanel.h

index e5d77db7dbf15b849c6dfbc0f70a452f345bafab..43fde26a9a364c34deba740bab5e5b0c8d799b22 100644 (file)
@@ -30,6 +30,9 @@
 #include <QGroupBox>
 #include <QLabel>
 #include <QMap>
+#include <QSizePolicy>
+#include <QPalette>
+#include <QFont>
 #include <QToolButton>
 #include <QVBoxLayout>
 
@@ -56,6 +59,23 @@ private:
   QGroupBox* group;
 };
 
+class QtxInfoPanel::TitleLabel: public QLabel
+{
+public:
+  TitleLabel(const QString &text, QWidget *parent = Q_NULLPTR, Qt::WindowFlags f = Qt::WindowFlags()) :
+     QLabel(text, parent, f){
+     this->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
+     QString color_bg = this->palette().color(QPalette::Highlight).darker().name();
+     QString color_fg = this->palette().color(QPalette::HighlightedText).name();
+     this->setStyleSheet(QString("QLabel {{background:%1; color:%2;}}").arg(color_bg).arg(color_fg));
+     this->setTextFormat(Qt::PlainText);
+     QFont font= QFont();
+     font.setBold(true);
+     this->setFont(font);
+     this->setContentsMargins(2, 5, 2, 5);
+  }
+};
+
 QtxInfoPanel::Container::Container( QWidget* parent )
   : QWidget( parent ), group( 0 )
 {
@@ -154,9 +174,12 @@ QtxInfoPanel::QtxInfoPanel( QWidget* parent )
 {
   container = new Container( this );
   QVBoxLayout* layout = new QVBoxLayout(this);
+  title = new TitleLabel("");
   layout->setMargin( 0 );
+  layout->addWidget( title );
   layout->addWidget( container );
   layout->addStretch();
+  title->setVisible(!title->text().isEmpty());
 }
 
 QtxInfoPanel::~QtxInfoPanel()
@@ -204,13 +227,24 @@ int QtxInfoPanel::addGroup( const QString& text, const int groupId )
   return id;
 }
 
+void QtxInfoPanel::setTitle( const QString& text )
+{
+  title->setText(text);
+  title->setVisible(!title->text().isEmpty());
+}
+
 void QtxInfoPanel::remove( const int id )
 {
   QWidget* widget = find( id );
   if ( widget )
   {
     Container* group = dynamic_cast<Container*>( widget->parentWidget() );
-    if ( group )
+    if ( !group )
+    {
+      group = dynamic_cast<Container*>( widget->parentWidget()->parentWidget() );
+      group->remove( id );
+    }
+    else
       group->remove( id );
   }
 }
index 5fcde4cef4360347c5863fde7d61cd68e058cafb..3c725d33f9d742bd1043ffba11e245a0ba7b82b5 100644 (file)
@@ -38,15 +38,17 @@ class QTX_EXPORT QtxInfoPanel : public QWidget
   Q_OBJECT
 
   class Container;
+  class TitleLabel;
 
 public:
   QtxInfoPanel( QWidget* = 0 );
   ~QtxInfoPanel();
 
   int                 addLabel( const QString&, const int = -1 );
-  int                 addLabel( const QString&, Qt::Alignment = Qt::AlignLeft, const int = -1 );
+  int                 addLabel( const QString&, Qt::Alignment, const int = -1 );
   int                 addAction( QAction*, const int = -1 );
   int                 addGroup( const QString&, const int = -1 );
+  void                setTitle( const QString& );
 
   void                remove( const int );
   void                clear( const int = -1 );
@@ -60,6 +62,7 @@ private:
 
 private:
   Container*          container;
+  TitleLabel*         title;
 };
 
 #ifdef WIN32