Results 1 to 15 of 15

Thread: Accessing the first data item from a IndexList.

Hybrid View

Previous Post Previous Post   Next Post Next Post
  1. #1
    Join Date
    Feb 2010
    Posts
    22
    Qt products
    Qt4
    Platforms
    Windows
    Thanks
    4

    Default Re: Accessing the first data item from a IndexList.

    Once again, that doesn't work..

    Now, I'm getting a runtime error, as seen in the picture below. The selectedRows() function, doesn't return the complete row of the index selectd in the model (unless you select multiple columns in a specific row, and then just gets the first data item from the first selected cell), so I'm not sure if that has something to do with the error.

    I've been trying to get this to work for quite some time today, but it's proving futile! I do appreciate the help, though, so don't think I don't!

    The model that is being utilized in the program is named "model."
    Qt Code:
    1. QVariant target;
    2.  
    3.  
    4. selectionModel = ui->taskView->selectionModel();
    5. QModelIndexList editIndex = selectionModel->selectedRows();
    6.  
    7. target = model->data(model->index(editIndex.first().row(), 0));
    To copy to clipboard, switch view to plain text mode 



    Edit: If I select the ENTIRE row, the code works, but that's not what I'm aiming for.
    Last edited by Bonafide; 26th February 2010 at 03:41.

  2. #2
    Join Date
    Feb 2008
    Posts
    491
    Qt products
    Qt4 Qt5
    Platforms
    Unix/X11
    Thanks
    12
    Thanked 142 Times in 135 Posts

    Default Re: Accessing the first data item from a IndexList.

    Will this work?
    Qt Code:
    1. QModelIndexList QItemSelectionModel::selectedIndexes () const
    To copy to clipboard, switch view to plain text mode 

  3. The following user says thank you to norobro for this useful post:

    Bonafide (26th February 2010)

  4. #3
    Join Date
    Feb 2010
    Posts
    22
    Qt products
    Qt4
    Platforms
    Windows
    Thanks
    4

    Default Re: Accessing the first data item from a IndexList.

    No, I tried that. selectedIndexes() only returns the index of the currently selected cell I believe, at least that's what I've assumed from testing it.

  5. #4
    Join Date
    Feb 2008
    Posts
    491
    Qt products
    Qt4 Qt5
    Platforms
    Unix/X11
    Thanks
    12
    Thanked 142 Times in 135 Posts

    Default Re: Accessing the first data item from a IndexList.

    But if you have the index of the currently selected cell, you can get it's row, so it looks like "target = model->data(model->index(editIndex.first().row(), 0));" would then work.

    Edit: Glad you got it working.
    Last edited by norobro; 26th February 2010 at 04:07.

  6. #5
    Join Date
    Feb 2010
    Posts
    22
    Qt products
    Qt4
    Platforms
    Windows
    Thanks
    4

    Default Re: Accessing the first data item from a IndexList.

    The problem was, selectedRows() or selectedIndexes() only returned the value of the selected cell(s); it does not return the indexes of all values in the row. So the QModelIndexList editIndex would only recieve the data from "NOTES" if it was the only cell selected. It would only work properly if the entire row was selected, thus returning the correct index and it's data. Otherwise, it only returned the data of the first index in editIndex, which may or may not of been what I wanted, and the rest of the code would then look for a value that never existed.

    With what I did, I simply got the index of the the cell, then from that index, get the row value of the index (passed in the "row" parameter of model-index(row, column), and then specificied the column I wanted.

  7. #6
    Join Date
    Feb 2010
    Posts
    22
    Qt products
    Qt4
    Platforms
    Windows
    Thanks
    4

    Default Re: Accessing the first data item from a IndexList.

    But once again, thanks for getting me on the right track. Your usage of of the index() function of model and .row(), got the juices flowin'.

  8. #7
    Join Date
    Feb 2010
    Posts
    22
    Qt products
    Qt4
    Platforms
    Windows
    Thanks
    4

    Default Re: Accessing the first data item from a IndexList.

    Eureka!

    This code successfully selects the first column of a row from any selected cell in said row, and returns it to a variable.

    Qt Code:
    1. QVariant target;
    2.  
    3. selectionModel = ui->taskView->selectionModel();
    4.  
    5. QModelIndex in = selectionModel->currentIndex();
    6.  
    7. target = model->data(model->index(in.row(), 0));
    To copy to clipboard, switch view to plain text mode 

    Many thanks, norobro, for getting me on the right track! You will be "thanked!"

Similar Threads

  1. QTableView : accessing the data
    By marvaneke in forum Newbie
    Replies: 10
    Last Post: 30th March 2012, 11:31
  2. Multiple File Data accessing
    By hasnatzaidi in forum Newbie
    Replies: 1
    Last Post: 28th October 2009, 16:34
  3. QTableView - data() - item
    By starcontrol in forum Qt Programming
    Replies: 1
    Last Post: 11th April 2008, 14:41
  4. Accessing data from a worker thread
    By steg90 in forum Qt Programming
    Replies: 20
    Last Post: 25th May 2007, 10:20
  5. accessing data in a QFile
    By nass in forum Qt Programming
    Replies: 1
    Last Post: 21st September 2006, 16:25

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Qt is a trademark of The Qt Company.