Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. QScrollArea and Splitter
Forum Updated to NodeBB v4.3 + New Features

QScrollArea and Splitter

Scheduled Pinned Locked Moved Unsolved General and Desktop
17 Posts 3 Posters 2.2k Views 2 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • L Offline
    L Offline
    leinad
    wrote on last edited by
    #7

    mainwindow.cpp

    #include "mainwindow.h"
    #include "ui_mainwindow.h"
    #define ADVANCE_FILTER_ROW_NUMBER 10

    MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow),
    advanceFilterCurrentRowNumber(0),
    advanceFilteringEnabled(false)
    {
    ui->setupUi(this);

    MainWindow::setupPanelToLookPretty();
    

    }

    MainWindow::~MainWindow()
    {
    delete ui;
    }

    //setupPanelToLookPretty is run only once when DataView comes up. It is NOT run when a new database is loaded.
    void MainWindow::setupPanelToLookPretty()
    {

    //Advance Filtering
    //Assign all the combo-boxes to QList so easy to handle in the future
    advanceFilteringComboboxObjectTypeList << ui->advanceFilterObjectTypeComboBox0 << ui->advanceFilterObjectTypeComboBox1 << ui->advanceFilterObjectTypeComboBox2 <<
                                 ui->advanceFilterObjectTypeComboBox3 << ui->advanceFilterObjectTypeComboBox4 << ui->advanceFilterObjectTypeComboBox5 <<
                                 ui->advanceFilterObjectTypeComboBox6 << ui->advanceFilterObjectTypeComboBox7 << ui->advanceFilterObjectTypeComboBox8 <<
                                 ui->advanceFilterObjectTypeComboBox9;
    
    advanceFilteringComboboxAttributeList << ui->advanceFilterAttributeComboBox0 << ui->advanceFilterAttributeComboBox1 << ui->advanceFilterAttributeComboBox2 <<
                                    ui->advanceFilterAttributeComboBox3 << ui->advanceFilterAttributeComboBox4 << ui->advanceFilterAttributeComboBox5 <<
                                    ui->advanceFilterAttributeComboBox6 << ui->advanceFilterAttributeComboBox7 << ui->advanceFilterAttributeComboBox8 <<
                                    ui->advanceFilterAttributeComboBox9;
    
    
    advanceFilteringComboboxMathList << ui->advanceFilterMathComboBox0 << ui->advanceFilterMathComboBox1 << ui->advanceFilterMathComboBox2 <<
                               ui->advanceFilterMathComboBox3 << ui->advanceFilterMathComboBox4 << ui->advanceFilterMathComboBox5 <<
                               ui->advanceFilterMathComboBox6 << ui->advanceFilterMathComboBox7 << ui->advanceFilterMathComboBox8 <<
                               ui->advanceFilterMathComboBox9;
    
    
    advanceFilteringComboboxMinValueList << ui->advanceFilterMinAtributeValueComboBox0 << ui->advanceFilterMinAtributeValueComboBox1 << ui->advanceFilterMinAtributeValueComboBox2 <<
                                   ui->advanceFilterMinAtributeValueComboBox3 << ui->advanceFilterMinAtributeValueComboBox4 << ui->advanceFilterMinAtributeValueComboBox5 <<
                                   ui->advanceFilterMinAtributeValueComboBox6 << ui->advanceFilterMinAtributeValueComboBox7 << ui->advanceFilterMinAtributeValueComboBox8 <<
                                   ui->advanceFilterMinAtributeValueComboBox9;
    
    
    
    advanceFilteringComboboxMaxValueList << ui->advanceFilterMaxAtributeValueComboBox0 << ui->advanceFilterMaxAtributeValueComboBox1 << ui->advanceFilterMaxAtributeValueComboBox2 <<
                                   ui->advanceFilterMaxAtributeValueComboBox3 << ui->advanceFilterMaxAtributeValueComboBox4 << ui->advanceFilterMaxAtributeValueComboBox5 <<
                                   ui->advanceFilterMaxAtributeValueComboBox6 << ui->advanceFilterMaxAtributeValueComboBox7 << ui->advanceFilterMaxAtributeValueComboBox8 <<
                                   ui->advanceFilterMaxAtributeValueComboBox9;
    
    
    //boolean has one less entry since the last query does not carry over to another query
    advanceFilteringComboboxBooleanList << ui->advanceFilterBooleanComboBox0 << ui->advanceFilterBooleanComboBox1 << ui->advanceFilterBooleanComboBox2 <<
                                  ui->advanceFilterBooleanComboBox3 << ui->advanceFilterBooleanComboBox4 << ui->advanceFilterBooleanComboBox5 <<
                                  ui->advanceFilterBooleanComboBox6 << ui->advanceFilterBooleanComboBox7 << ui->advanceFilterBooleanComboBox8;
    
    //Place tool tips and default lineEdit text but first create lineEdits for each of the combo boxes
    for(int i = 0; i < ADVANCE_FILTER_ROW_NUMBER; i++)
    {
        QLineEdit *tempLineEdit1 = new QLineEdit;
        advanceFilteringObjectTypeLineEditList << tempLineEdit1;
    
        //later  on we have assign the combo-boxes to a completer but since we dont have the actual list we do a temporary assignemnt to place text
        //object types
        advanceFilteringComboboxObjectTypeList[i]->setEditable(false);
        advanceFilteringComboboxObjectTypeList[i]->setLineEdit(advanceFilteringObjectTypeLineEditList[i]);
        advanceFilteringObjectTypeLineEditList[i]->setPlaceholderText("Select an Object Type");
        advanceFilteringComboboxObjectTypeList[i]->setToolTip("Shows all possible object types.  Users can can query on one more object types in the same query");
        advanceFilteringComboboxObjectTypeList[i]->setInsertPolicy(QComboBox::NoInsert);
        advanceFilteringComboboxObjectTypeList[i]->setCurrentIndex(-1);
        advanceFilteringComboboxObjectTypeList[i]->setVisible(false); //hide the combo-boxes as an initial condition
    
        //Attributes
        QLineEdit *tempLineEdit2 = new QLineEdit;
        advanceFilteringAttributeLineEditList << tempLineEdit2;
    
        advanceFilteringComboboxAttributeList[i]->setEditable(false);
        advanceFilteringComboboxAttributeList[i]->setLineEdit(advanceFilteringAttributeLineEditList[i]);
        advanceFilteringAttributeLineEditList[i]->setPlaceholderText("Select an Attribute (after selecting an Object Type");
        advanceFilteringComboboxAttributeList[i]->setToolTip("Shows all the attributes associated with a selected object type.");
        advanceFilteringComboboxAttributeList[i]->setInsertPolicy(QComboBox::NoInsert);
        advanceFilteringComboboxAttributeList[i]->setCurrentIndex(-1);
        advanceFilteringComboboxAttributeList[i]->setVisible(false); //hide the combo-boxes as an initial condition
    
        //Math input
        QLineEdit *tempLineEdit3 = new QLineEdit;
        advanceFilteringMathLineEditList << tempLineEdit3;
    
        advanceFilteringComboboxMathList[i]->setEditable(false);
        advanceFilteringComboboxMathList[i]->setLineEdit(advanceFilteringMathLineEditList[i]);
        advanceFilteringMathLineEditList[i]->setPlaceholderText("Comparison Selection");
        advanceFilteringComboboxMathList[i]->setInsertPolicy(QComboBox::NoInsert);
        advanceFilteringComboboxMathList[i]->addItem("=");
        advanceFilteringComboboxMathList[i]->addItem(">=");
        advanceFilteringComboboxMathList[i]->addItem("<");
        advanceFilteringComboboxMathList[i]->addItem("<=");
        advanceFilteringComboboxMathList[i]->addItem("!=");
        advanceFilteringComboboxMathList[i]->addItem("IN BETWEEN");
        advanceFilteringComboboxMathList[i]->addItem("CONTAINS");
        advanceFilteringComboboxMathList[i]->setToolTip("Select a comparison value. 'IN BETWEEN' requires a minimum and maximum entry.");
        advanceFilteringComboboxMathList[i]->setCurrentIndex(-1);  //must be at the end since we added
        advanceFilteringComboboxMathList[i]->setVisible(false); //hide the combo-boxes as an initial condition
    
        //min attribute values
        QLineEdit *tempLineEdit4 = new QLineEdit;
        advanceFilteringMinValueLineEditList << tempLineEdit4;
    
        advanceFilteringComboboxMinValueList[i]->setEditable(true);  //needs to be editable
        advanceFilteringComboboxMinValueList[i]->setLineEdit(advanceFilteringMinValueLineEditList[i]);
        advanceFilteringMinValueLineEditList[i]->setPlaceholderText("Select Minimum value");
        advanceFilteringComboboxMinValueList[i]->setToolTip("Select a value for the selected attribute.");
        advanceFilteringComboboxMinValueList[i]->setCurrentIndex(-1);
        advanceFilteringComboboxMinValueList[i]->setVisible(false); //hide the combo-boxes as an initial condition
    
        //max attribute values
        QLineEdit *tempLineEdit5 = new QLineEdit;
        advanceFilteringMaxValueLineEditList << tempLineEdit5;
    
        advanceFilteringComboboxMaxValueList[i]->setEditable(true); //needs to be editable
        advanceFilteringComboboxMaxValueList[i]->setLineEdit(advanceFilteringMaxValueLineEditList[i]);
        advanceFilteringMaxValueLineEditList[i]->setPlaceholderText("Select Maximum value");
        advanceFilteringComboboxMaxValueList[i]->setToolTip("Select a maximum value (Only valid when using the 'IN BETWEEN' selection under the comparison selections.");
        advanceFilteringComboboxMaxValueList[i]->setCurrentIndex(-1);
        advanceFilteringComboboxMaxValueList[i]->setVisible(false); //hide the combo-boxes as an initial condition
    
        //boolean selections (one less since last row has no boolean slection
        if(i < ADVANCE_FILTER_ROW_NUMBER - 1)
        {
            QLineEdit *tempLineEdit6 = new QLineEdit;
            advanceFilteringBooleanLineEditList << tempLineEdit6;
    
            advanceFilteringComboboxBooleanList[i]->setEditable(false);
            advanceFilteringComboboxBooleanList[i]->setLineEdit(advanceFilteringBooleanLineEditList[i]);
            advanceFilteringBooleanLineEditList[i]->setPlaceholderText("Select a boolean value");
            advanceFilteringBooleanLineEditList[i]->setToolTip("Select a boolean value (used for compound queries (AND/OR).  If not selected not a compund query.");
            advanceFilteringComboboxBooleanList[i]->addItem("");  //When there is no compund query
            advanceFilteringComboboxBooleanList[i]->addItem("AND");
            advanceFilteringComboboxBooleanList[i]->addItem("OR");
            advanceFilteringComboboxBooleanList[i]->setInsertPolicy(QComboBox::NoInsert);
            advanceFilteringComboboxBooleanList[i]->setCurrentIndex(-1);
            advanceFilteringComboboxBooleanList[i]->setVisible(false); //hide the combo-boxes as an initial condition
        }
    }
    
    //advance filter scroll area is removed from the display as an initial condition
    ui->advanceFilterScrollArea->setVisible(false);
    ui->advanceFilterClearPushButton->setVisible(false);
    ui->advanceFilterAddRowPushButton->setVisible(false);
    ui->advanceFilterRemoveRowPushButton->setVisible(false);
    

    // QSplitter *splitter = new QSplitter(Qt::Vertical);
    // ui->advanceFilterGridLayout->addWidget(splitter);
    // ui->basicFilterLayout->addWidget(splitter); //remove splitter from include if not using

    }

    //turn on/off the advance filtering/basic filtering dialogue boxes
    void MainWindow::on_enableAdvanceFilteringPushButton_clicked()
    {
    if(advanceFilteringEnabled == false)
    {
    advanceFilteringEnabled = true;
    ui->advanceFilterScrollArea->setVisible(true); //advance filtering scroll area
    ui->enableAdvanceFilteringPushButton->setText("Enable Basic Filtering");
    ui->advanceFilterClearPushButton->setVisible(true);
    ui->advanceFilterAddRowPushButton->setVisible(true);
    ui->advanceFilterRemoveRowPushButton->setVisible(true);

        //basic filetring selections turned on
        ui->clearFilterpushButton->setVisible(false);
        ui->objectTypeComboBox->setVisible(false);
        ui->eventTypeComboBox->setVisible(false);
        ui->ipStringValueComboBox->setVisible(false);
        ui->minTimeOfReceiptComboBox->setVisible(false);
        ui->maxTimeOfReceiptComboBox->setVisible(false);
    
        //show the last set of advance filter selection boxes
        if(advanceFilterCurrentRowNumber == ADVANCE_FILTER_ROW_NUMBER)  //since we start with zero we want to make sure we don't over allocate
            advanceFilterCurrentRowNumber--;
    
        for(int i = 0; i <= advanceFilterCurrentRowNumber; i++)
        {
           advanceFilteringComboboxObjectTypeList[i]->setVisible(true);
           advanceFilteringComboboxAttributeList[i]->setVisible(true);
           advanceFilteringComboboxMathList[i]->setVisible(true);
           advanceFilteringComboboxMinValueList[i]->setVisible(true);
           advanceFilteringComboboxMaxValueList[i]->setVisible(true);
           if(i < ADVANCE_FILTER_ROW_NUMBER - 1)
                advanceFilteringComboboxBooleanList[i]->setVisible(true);
        }
    }
    else  //advance filetring turned off so using basic filtering is enabled
    {
        advanceFilteringEnabled = false;
        ui->advanceFilterScrollArea->setVisible(false);
        ui->advanceFilterClearPushButton->setVisible(false);
        ui->advanceFilterAddRowPushButton->setVisible(false);
        ui->advanceFilterRemoveRowPushButton->setVisible(false);
        ui->enableAdvanceFilteringPushButton->setText("Enable Advance Filtering");
        //basic filetring selecections turned on
        ui->clearFilterpushButton->setVisible(true);
        ui->objectTypeComboBox->setVisible(true);
        ui->eventTypeComboBox->setVisible(true);
        ui->ipStringValueComboBox->setVisible(true);
        ui->minTimeOfReceiptComboBox->setVisible(true);
        ui->maxTimeOfReceiptComboBox->setVisible(true);
    }
    

    }

    //clear the advance filtering dialogue boxes
    void MainWindow::on_advanceFilterClearPushButton_clicked()
    {
    for(int i = 0; i < ADVANCE_FILTER_ROW_NUMBER; i++)
    {
    advanceFilteringComboboxObjectTypeList[i]->setCurrentIndex(-1);
    advanceFilteringComboboxAttributeList[i]->setCurrentIndex(-1);
    advanceFilteringComboboxMathList[i]->setCurrentIndex(-1);
    advanceFilteringComboboxMinValueList[i]->setCurrentIndex(-1);
    advanceFilteringComboboxMaxValueList[i]->setCurrentIndex(-1);
    if(i < ADVANCE_FILTER_ROW_NUMBER - 1)
    advanceFilteringComboboxBooleanList[i]->setCurrentIndex(-1);
    }

    }

    //Add an advance filter row
    void MainWindow::on_advanceFilterAddRowPushButton_clicked()
    {
    advanceFilterCurrentRowNumber++; //advance the master row number

    if(advanceFilterCurrentRowNumber >= ADVANCE_FILTER_ROW_NUMBER)
    {
        advanceFilterCurrentRowNumber--;  // go back to original value since button is clicked more times than required
        return;
    }
    advanceFilteringComboboxObjectTypeList[advanceFilterCurrentRowNumber]->setVisible(true);
    advanceFilteringComboboxAttributeList[advanceFilterCurrentRowNumber]->setVisible(true);
    advanceFilteringComboboxMathList[advanceFilterCurrentRowNumber]->setVisible(true);
    advanceFilteringComboboxMinValueList[advanceFilterCurrentRowNumber]->setVisible(true);
    advanceFilteringComboboxMaxValueList[advanceFilterCurrentRowNumber]->setVisible(true);
    if(advanceFilterCurrentRowNumber < ADVANCE_FILTER_ROW_NUMBER - 1)
         advanceFilteringComboboxBooleanList[advanceFilterCurrentRowNumber]->setVisible(true);
    

    }

    //Remove an advance filter row
    void MainWindow::on_advanceFilterRemoveRowPushButton_clicked()
    {
    if(advanceFilterCurrentRowNumber == 0)
    return;

    advanceFilteringComboboxObjectTypeList[advanceFilterCurrentRowNumber]->setVisible(false);
    advanceFilteringComboboxAttributeList[advanceFilterCurrentRowNumber]->setVisible(false);
    advanceFilteringComboboxMathList[advanceFilterCurrentRowNumber]->setVisible(false);
    advanceFilteringComboboxMinValueList[advanceFilterCurrentRowNumber]->setVisible(false);
    advanceFilteringComboboxMaxValueList[advanceFilterCurrentRowNumber]->setVisible(false);
    if(advanceFilterCurrentRowNumber < ADVANCE_FILTER_ROW_NUMBER - 1)
        advanceFilteringComboboxBooleanList[advanceFilterCurrentRowNumber]->setVisible(false);
    
    advanceFilterCurrentRowNumber--;  //decrement the master row number
    

    }

    1 Reply Last reply
    0
    • L Offline
      L Offline
      leinad
      wrote on last edited by
      #8

      I can't load the mainwindow.ui. Says too many characters. Is there a way I can upload the project as a whole?

      jsulmJ 1 Reply Last reply
      0
      • L leinad

        I can't load the mainwindow.ui. Says too many characters. Is there a way I can upload the project as a whole?

        jsulmJ Offline
        jsulmJ Offline
        jsulm
        Lifetime Qt Champion
        wrote on last edited by
        #9

        @leinad Upload your project to some file sharing service and post the link here

        https://forum.qt.io/topic/113070/qt-code-of-conduct

        1 Reply Last reply
        1
        • L Offline
          L Offline
          leinad
          wrote on last edited by
          #10

          Here is a link to a small project. Thanks for your help!

          https://rapidshare.nu/Tb2ds8iboe/test_zip

          1 Reply Last reply
          0
          • SGaistS Offline
            SGaistS Offline
            SGaist
            Lifetime Qt Champion
            wrote on last edited by
            #11

            Your file is not available anymore.

            Interested in AI ? www.idiap.ch
            Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

            1 Reply Last reply
            0
            • L Offline
              L Offline
              leinad
              wrote on last edited by
              #12

              Let's try this link.

              https://filebin.net/o9f7ejxiztx0qy0q

              1 Reply Last reply
              0
              • L Offline
                L Offline
                leinad
                wrote on last edited by
                #13

                It's been a while. Can someone take a look at this and provide some assistance?

                Thanks.

                1 Reply Last reply
                0
                • L Offline
                  L Offline
                  leinad
                  wrote on last edited by
                  #14

                  Old link expired so here is a new link to the project. Please help!

                  https://filebin.net/iuymg1uuawa9dw9y

                  1 Reply Last reply
                  0
                  • SGaistS Offline
                    SGaistS Offline
                    SGaist
                    Lifetime Qt Champion
                    wrote on last edited by
                    #15

                    Why did you add that scroll area alone in its own QSplitter ?

                    Interested in AI ? www.idiap.ch
                    Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                    1 Reply Last reply
                    0
                    • L Offline
                      L Offline
                      leinad
                      wrote on last edited by
                      #16

                      I'm trying to adjust the scrollarea size, this way users can show all or partial number of combo-boxes. If they expand to full size the scrollbar in the scroll area will disappear and they can see all the comboxes.

                      1 Reply Last reply
                      0
                      • SGaistS Offline
                        SGaistS Offline
                        SGaist
                        Lifetime Qt Champion
                        wrote on last edited by
                        #17

                        You should rather add it to your already existing splitter. You don't have the effect you want because you put a single widget in a single splitter.

                        Interested in AI ? www.idiap.ch
                        Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                        1 Reply Last reply
                        0

                        • Login

                        • Login or register to search.
                        • First post
                          Last post
                        0
                        • Categories
                        • Recent
                        • Tags
                        • Popular
                        • Users
                        • Groups
                        • Search
                        • Get Qt Extensions
                        • Unsolved