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. how can i get Delegate for QTableWidget?
QtWS25 Last Chance

how can i get Delegate for QTableWidget?

Scheduled Pinned Locked Moved Solved General and Desktop
qtablewidgetqmouseevent
30 Posts 4 Posters 15.9k Views
  • 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.
  • J Jan-Willem
    29 Aug 2016, 07:17

    In addidtion to @mrjj, I would suggest before or after the entire

    for (int row = 0; row < 4; ++row)
    
    S Offline
    S Offline
    srikanth
    wrote on 29 Aug 2016, 09:10 last edited by srikanth
    #21

    @Jan-Willem now i get clear idea this error is coming when am trying to insert a delegate into column , so i want to know is there any thing wrong to insert delegates into the tablewidget, please help me to get out from this task . @mrjj

    1 Reply Last reply
    0
    • J Offline
      J Offline
      Jan-Willem
      wrote on 29 Aug 2016, 09:49 last edited by
      #22

      How does your code look like now, something like this?

      void Notepad::test() 
      {	
      	QTableWidgetItem* tableItem = new QTableWidgetItem();
      	
      	table->setRowCount(1);
      	table->setColumnCount(3);
      	table->setItem(0,0,new QTableWidgetItem());
      	table->setItem(0,1,new QTableWidgetItem());
      	table->setItem(0,2,new QTableWidgetItem());
      
      	table->setMouseTracking(true);
              table->viewport()->setMouseTracking(true);
              table->installEventFilter(this);
              table->viewport()->installEventFilter(this);
      
              table->setSelectionBehavior(QAbstractItemView::SelectRows);
              table->setSelectionMode(QAbstractItemView::SingleSelection);
      	
      	QStandardItemModel model((table->rowCount()),(table->columnCount()));
      	SpinBoxDelegate *sdelegate = new SpinBoxDelegate ();
      	ComboBoxDelegate * comDel = new ComboBoxDelegate ();
      
      	 for (int row = 0; row < 4; ++row) {
                     for (int col = 0; col < 2; ++col) {
                           QModelIndex index = model.index(row, col, QModelIndex());
                           model.setData(index, QVariant((row + 1) * (col + 1)));
      	}
              table->setItemDelegateForColumn(0,  comDel);
              table->setItemDelegateForColumn(1, sdelegate);
      
      	table->setHorizontalHeaderItem(0, new QTableWidgetItem("combobox"));
      	table->setHorizontalHeaderItem(1, new QTableWidgetItem("spinbox"));
      	table->setHorizontalHeaderItem(2, new QTableWidgetItem("lineEdit"));
      	tableItem->setFlags(tableItem->flags() ^ Qt::ItemIsEditable);
      	table->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);
      	setCentralWidget(table);
      }
      
      S 1 Reply Last reply 29 Aug 2016, 10:02
      2
      • J Jan-Willem
        29 Aug 2016, 09:49

        How does your code look like now, something like this?

        void Notepad::test() 
        {	
        	QTableWidgetItem* tableItem = new QTableWidgetItem();
        	
        	table->setRowCount(1);
        	table->setColumnCount(3);
        	table->setItem(0,0,new QTableWidgetItem());
        	table->setItem(0,1,new QTableWidgetItem());
        	table->setItem(0,2,new QTableWidgetItem());
        
        	table->setMouseTracking(true);
                table->viewport()->setMouseTracking(true);
                table->installEventFilter(this);
                table->viewport()->installEventFilter(this);
        
                table->setSelectionBehavior(QAbstractItemView::SelectRows);
                table->setSelectionMode(QAbstractItemView::SingleSelection);
        	
        	QStandardItemModel model((table->rowCount()),(table->columnCount()));
        	SpinBoxDelegate *sdelegate = new SpinBoxDelegate ();
        	ComboBoxDelegate * comDel = new ComboBoxDelegate ();
        
        	 for (int row = 0; row < 4; ++row) {
                       for (int col = 0; col < 2; ++col) {
                             QModelIndex index = model.index(row, col, QModelIndex());
                             model.setData(index, QVariant((row + 1) * (col + 1)));
        	}
                table->setItemDelegateForColumn(0,  comDel);
                table->setItemDelegateForColumn(1, sdelegate);
        
        	table->setHorizontalHeaderItem(0, new QTableWidgetItem("combobox"));
        	table->setHorizontalHeaderItem(1, new QTableWidgetItem("spinbox"));
        	table->setHorizontalHeaderItem(2, new QTableWidgetItem("lineEdit"));
        	tableItem->setFlags(tableItem->flags() ^ Qt::ItemIsEditable);
        	table->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);
        	setCentralWidget(table);
        }
        
        S Offline
        S Offline
        srikanth
        wrote on 29 Aug 2016, 10:02 last edited by
        #23

        @Jan-Willem yeah my code is like this only, but delegates are not assigning to the columns of table widget?

        1 Reply Last reply
        0
        • J Offline
          J Offline
          Jan-Willem
          wrote on 29 Aug 2016, 10:27 last edited by
          #24

          The comDel is assigned to the entire column at index 0 with table->setItemDelegateForColumn(0, comDel).

          S 1 Reply Last reply 29 Aug 2016, 10:38
          0
          • J Jan-Willem
            29 Aug 2016, 10:27

            The comDel is assigned to the entire column at index 0 with table->setItemDelegateForColumn(0, comDel).

            S Offline
            S Offline
            srikanth
            wrote on 29 Aug 2016, 10:38 last edited by
            #25

            @Jan-Willem but that delegate is not assigned to columns of table widget .

            1 Reply Last reply
            0
            • J Offline
              J Offline
              Jan-Willem
              wrote on 29 Aug 2016, 10:49 last edited by
              #26

              Just for my curiosity?
              Which version of Qt are you using?

              S 1 Reply Last reply 29 Aug 2016, 10:57
              0
              • J Jan-Willem
                29 Aug 2016, 10:49

                Just for my curiosity?
                Which version of Qt are you using?

                S Offline
                S Offline
                srikanth
                wrote on 29 Aug 2016, 10:57 last edited by
                #27

                @Jan-Willem qt 4.8.3 on Visual Studio 2010

                and my code looks like this

                void Notepad::test() 
                {	    
                	
                	QTableWidgetItem* tableItem = new QTableWidgetItem();
                	
                	table->setRowCount(1);
                	table->setColumnCount(3);
                	table->setItem(0,0,new QTableWidgetItem());
                	table->setItem(0,1,new QTableWidgetItem());
                	table->setItem(0,2,new QTableWidgetItem());
                
                	table->setMouseTracking(true);
                    table->viewport()->setMouseTracking(true);
                    table->installEventFilter(this);
                    table->viewport()->installEventFilter(this);
                
                	table->setSelectionBehavior(QAbstractItemView::SelectRows);
                    table->setSelectionMode(QAbstractItemView::SingleSelection);
                	
                	QStandardItemModel model((table->rowCount()),(table->columnCount()));
                	//SpinBoxDelegate sdelegate;
                	//ComboBoxDelegate comDel;
                	int newrow =table->rowCount();
                	int newcol =table->columnCount();
                
                
                	SpinBoxDelegate *sdelegate = new SpinBoxDelegate ();
                	ComboBoxDelegate * comDel = new ComboBoxDelegate ();
                
                	 for (int row = 0; row < 1; ++row) {
                               for (int col = 0; col < 3; ++col) {
                				 
                                     QModelIndex index = model.index(row, col, QModelIndex());
                                     model.setData(index, QVariant((row + 1) * (col + 1)));
                	table->setItemDelegateForColumn( newcol, comDel);
                			   }
                  
                	 }
                	/*for (int row = 0; row < 4; ++row)
                	{
                table->setItemDelegateForColumn( 2, &sdelegate);
                	}*/
                
                     	table->setHorizontalHeaderItem(0, new QTableWidgetItem("combobox"));
                	table->setHorizontalHeaderItem(1, new QTableWidgetItem("spinbox"));
                	table->setHorizontalHeaderItem(2, new QTableWidgetItem("lineEdit"));
                	tableItem->setFlags(tableItem->flags() ^ Qt::ItemIsEditable);
                	table->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);
                	setCentralWidget(table);
                }
                
                1 Reply Last reply
                0
                • J Offline
                  J Offline
                  Jan-Willem
                  wrote on 29 Aug 2016, 12:29 last edited by
                  #28

                  Alright. Frankly I think you are making things more difficult than they have to be.

                  First of all you shouldn't set the columndelegate inside the for-statement, since you set it multiple times for no reason. Once will do for the entire column, so do it before or after the for-statement.

                  Second, you create a QStandardItemModel and use it with a QTabelWidget. A QTableWidget has it's own internal model.
                  The QModelIndex returned by model.index(row, col, QModelIndex()) is not in your table, but in your QStandardItemModel.

                  Perhaps you should read this first: Model/View Programming

                  S 1 Reply Last reply 30 Aug 2016, 05:20
                  3
                  • J Jan-Willem
                    29 Aug 2016, 12:29

                    Alright. Frankly I think you are making things more difficult than they have to be.

                    First of all you shouldn't set the columndelegate inside the for-statement, since you set it multiple times for no reason. Once will do for the entire column, so do it before or after the for-statement.

                    Second, you create a QStandardItemModel and use it with a QTabelWidget. A QTableWidget has it's own internal model.
                    The QModelIndex returned by model.index(row, col, QModelIndex()) is not in your table, but in your QStandardItemModel.

                    Perhaps you should read this first: Model/View Programming

                    S Offline
                    S Offline
                    srikanth
                    wrote on 30 Aug 2016, 05:20 last edited by
                    #29

                    @Jan-Willem @mrjj Thank you very much. problem is solved. your right am making things difficult , thanks for your advice it makes me to keen observe of my code and solve , Thanks a lot.
                    Can't believe that there is people who spend their time for such noob as me. Thank you again.

                    1 Reply Last reply
                    1
                    • J Offline
                      J Offline
                      Jan-Willem
                      wrote on 30 Aug 2016, 17:28 last edited by
                      #30

                      Glad it works so far.
                      Good luck with the rest.

                      1 Reply Last reply
                      0

                      21/30

                      29 Aug 2016, 09:10

                      • Login

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