spinbox input add rows ??
-
wrote on 29 Apr 2021, 16:49 last edited by VRonin
I suspect the 3rd argument might be
this
. You can at least put theconnect
inside aQ_ASSUME()
so you get a runtime crash in debug mode if the connect fails -
wrote on 29 Apr 2021, 17:20 last edited by
yes, thanks using this works
but what happening is i added 10 rows and when i change value in spinbox to 1 then no. of rows in table also changing to 1so i think using loop this prblm will be solved
int noofrows = ui.spinBox->value(); for (int i = 0;i < noofrows;i++) { model->insertRows(i,noofrows); }
if use this loop when i enter 1 in spinbox it adds two rows ?
-
yes, thanks using this works
but what happening is i added 10 rows and when i change value in spinbox to 1 then no. of rows in table also changing to 1so i think using loop this prblm will be solved
int noofrows = ui.spinBox->value(); for (int i = 0;i < noofrows;i++) { model->insertRows(i,noofrows); }
if use this loop when i enter 1 in spinbox it adds two rows ?
wrote on 29 Apr 2021, 17:26 last edited by JonB@n-2204
I already told you about that earlier.And finally I doubt you really intend
model->insertRows(i, model->rowCount(QModelIndex()));
Why
rowCount()
as the number of rows to add?? I would have thought given your loop you would want 1 there. You are confusinginsertRows()
to add multiple rows without a loop versus a loop to add one row at a time....EITHER a
for
loop withinsertRow()
, OR nofor
loop andinsertRows()
. You really should be able to understand this.Put some
qDebug()
statements in to see for yourself what is going on. That is what debugging is about. -
wrote on 30 Apr 2021, 04:27 last edited by
ok understood
thank you all -
wrote on 30 Apr 2021, 10:56 last edited by
tooll::tool(QWidget* parent) : QMainWindow(parent) { ui.setupUi(this); model = new QStandardItemModel(10, 13, this) ui.tableView->setModel(model); connect(ui.spinBox, SIGNAL(valueChanged(int)), model, SLOT(setTableRows())); } void tool::setTable2Rows() { int noofrows2 = ui.spinBox_2->value(); for (int i = 0;i < noofrows2;++i) { model2->insertRow(i); //qDebug() << i; } }
when i am using new signal/slot why i am getting error
(Error (active) E0304 no instance of overloaded function)connect(ui.spinBox, &QSpinBox::valueChanged, this,&tool::setTableRows); connect( sender, &Sender::valueChanged, receiver, &Receiver::updateValue);
-
tooll::tool(QWidget* parent) : QMainWindow(parent) { ui.setupUi(this); model = new QStandardItemModel(10, 13, this) ui.tableView->setModel(model); connect(ui.spinBox, SIGNAL(valueChanged(int)), model, SLOT(setTableRows())); } void tool::setTable2Rows() { int noofrows2 = ui.spinBox_2->value(); for (int i = 0;i < noofrows2;++i) { model2->insertRow(i); //qDebug() << i; } }
when i am using new signal/slot why i am getting error
(Error (active) E0304 no instance of overloaded function)connect(ui.spinBox, &QSpinBox::valueChanged, this,&tool::setTableRows); connect( sender, &Sender::valueChanged, receiver, &Receiver::updateValue);
@n-2204 Please post whole error message. Does your tooll class have setTableRows slot? I'm asking because I only see setTable2Rows()
-
@n-2204 Please post whole error message. Does your tooll class have setTableRows slot? I'm asking because I only see setTable2Rows()
wrote on 30 Apr 2021, 11:29 last edited byyes slot setTablerow() is also there
void tool::setTableRows() { int noofrows = ui.spinBox->value(); for (int i = 0;i < noofrows;++i) { model->insertRow(i); //qDebug() << i; }
c++ no instance of overloaded function matches the argument list argument types are: (QSpinBox *, <unknown-type>, tooll , void (tool::)())
Severity Code Description Project File Line Suppression State Detail Description
Error (active) E0304 no instance of overloaded function "tool::connect" matches the argument list tool C:\User\source\repos\tool\tooll.cpp 265 argument types are: (QSpinBox *, <unknown-type>, tool , void (tool::)()) -
tooll::tool(QWidget* parent) : QMainWindow(parent) { ui.setupUi(this); model = new QStandardItemModel(10, 13, this) ui.tableView->setModel(model); connect(ui.spinBox, SIGNAL(valueChanged(int)), model, SLOT(setTableRows())); } void tool::setTable2Rows() { int noofrows2 = ui.spinBox_2->value(); for (int i = 0;i < noofrows2;++i) { model2->insertRow(i); //qDebug() << i; } }
when i am using new signal/slot why i am getting error
(Error (active) E0304 no instance of overloaded function)connect(ui.spinBox, &QSpinBox::valueChanged, this,&tool::setTableRows); connect( sender, &Sender::valueChanged, receiver, &Receiver::updateValue);
wrote on 30 Apr 2021, 16:06 last edited by@n-2204 said in spinbox input add rows ??:
tooll::tool(QWidget* parent)
????
What's the name of the class?
tooll
ortool
? looks like a big mess here -
@n-2204 said in spinbox input add rows ??:
c++ no instance of overloaded function matches the argument list argument types are: (QSpinBox *, <unknown-type>, tooll , void (tool::)())
How about taking a single look into the documentation? The problem is exactly explained there.
Simply writing something without understanding what you're doing doesn't help you at all.
-
wrote on 30 Apr 2021, 17:26 last edited by n-2204
thanks for sharing ref doc, its done
connect(ui.spinBox, QOverload<int>::of(&QSpinBox::valueChanged), this, &tool::setTableRows);
-
wrote on 3 May 2021, 05:17 last edited by
what changes need to do to end the row at end of row, now when i enter value in spinbox row is adding in top but i need to add the row at end how to do ?
void tool::setTableRows() { int noofrows = ui.spinBox->value(); for (int i = 0;i < noofrows;++i) { model->insertRow(i); } } connect(ui.spinBox, QOverload<int>::of(&QSpinBox::valueChanged), this, &tool::setTableRows);
-
what changes need to do to end the row at end of row, now when i enter value in spinbox row is adding in top but i need to add the row at end how to do ?
void tool::setTableRows() { int noofrows = ui.spinBox->value(); for (int i = 0;i < noofrows;++i) { model->insertRow(i); } } connect(ui.spinBox, QOverload<int>::of(&QSpinBox::valueChanged), this, &tool::setTableRows);
@n-2204 https://doc.qt.io/qt-5/qabstractitemmodel.html#insertRow
"Inserts a single row before the given row in the child items of the parent specified".
So, what do you think should you pass as row to insertRow to add at the end of the table? -
@n-2204 https://doc.qt.io/qt-5/qabstractitemmodel.html#insertRow
"Inserts a single row before the given row in the child items of the parent specified".
So, what do you think should you pass as row to insertRow to add at the end of the table?wrote on 3 May 2021, 08:00 last edited by@jsulm said in spinbox input add rows ??:
@n-2204 https://doc.qt.io/qt-5/qabstractitemmodel.html#insertRow
"Inserts a single row before the given row in the child items of the parent specified".
So, what do you think should you pass as row to insertRow to add at the end of the table?Further to @jsulm.
insertRow()
saysNote: This function calls the virtual method
insertRows
.And in the docs for
insertRows
, immediately adjacent toinsertRow
, if you read it it actually tells you what to pass so thatthe rows are appended to any existing rows
Please take the time to read docs....
-
wrote on 3 May 2021, 12:43 last edited by n-2204 5 Mar 2021, 13:02
how can i set value of a spinbox and also edittable for user ?
void tool::setTable2Rows() { QAbstractItemModel* table2 = ui.tableView_2->model(); int rows2 = ui.spinBox_2->value(); ui.spinBox->setValue(10);//this is not working model2->setRowCount(rows2); }
if i setvalue 10 then that no. of rows should be there
-
how can i set value of a spinbox and also edittable for user ?
void tool::setTable2Rows() { QAbstractItemModel* table2 = ui.tableView_2->model(); int rows2 = ui.spinBox_2->value(); ui.spinBox->setValue(10);//this is not working model2->setRowCount(rows2); }
if i setvalue 10 then that no. of rows should be there
wrote on 3 May 2021, 13:22 last edited by@n-2204 said in spinbox input add rows ??:
ui.spinBox->setValue(10);//this is not working
Don't what you mean. "Not working" could indicate anything. I imagine this works perfectly well.
how can i set value of a spinbox and also edittable for user ?
if i setvalue 10 then that no. of rows should be there
Don't know what these mean either.
-
wrote on 3 May 2021, 13:24 last edited by
not working means value is not set to 10
and when i setvalue as 10 , 10 rows should be there in my table
also when user change the spinbox value to 11 or 8 no. of rows in table should update -
not working means value is not set to 10
and when i setvalue as 10 , 10 rows should be there in my table
also when user change the spinbox value to 11 or 8 no. of rows in table should updatewrote on 3 May 2021, 13:42 last edited by@n-2204 said in spinbox input add rows ??:
not working means value is not set to 10
What value is not set to 10? You can see what it sets:
ui.spinBox->setValue(10);
I would bet my bottom $ that it does exactly that.
and when i setvalue as 10 , 10 rows should be there in my table
Your code has
model2->setRowCount(rows2);
so that is what it does.
also when user change the spinbox value to 11 or 8 no. of rows in table should update
Which spinbox? Only if you call the code to set the rows when the spin value changes, and only if the code is correct. Which i have to say does not look like the case for the 4 lines of code you have shown...
-
wrote on 3 May 2021, 14:20 last edited by
code:
tool::tool(QWidget* parent) : QMainWindow(parent) { ui.setupUi(this); model = new QStandardItemModel(0, 13, this);//row*col model2 = new QStandardItemModel(0, 19, this) ui.spinBox->setValue(10); ui.spinBox_2->setValue(10);
using this in spinbox value is 10 but the same no. of rows is not updated in my table
so when i set value in spinbox same no. of rows should be added in my table
and when user change value in spinbox row should update (that is happening)connect(ui.spinBox, QOverload<int>::of(&QSpinBox::valueChanged), this, &tool::setTableRows); connect(ui.spinBox_2, QOverload<int>::of(&QSpinBox::valueChanged), this, &tool::setTable2Rows); } void tool::setTableRows() { QAbstractItemModel* table1 = ui.tableView->model(); int rows = ui.spinBox->value(); model->setRowCount(rows); } void tool::setTable2Rows() { QAbstractItemModel* table2 = ui.tableView_2->model(); int rows2 = ui.spinBox_2->value(); model2->setRowCount(rows2); }
-
code:
tool::tool(QWidget* parent) : QMainWindow(parent) { ui.setupUi(this); model = new QStandardItemModel(0, 13, this);//row*col model2 = new QStandardItemModel(0, 19, this) ui.spinBox->setValue(10); ui.spinBox_2->setValue(10);
using this in spinbox value is 10 but the same no. of rows is not updated in my table
so when i set value in spinbox same no. of rows should be added in my table
and when user change value in spinbox row should update (that is happening)connect(ui.spinBox, QOverload<int>::of(&QSpinBox::valueChanged), this, &tool::setTableRows); connect(ui.spinBox_2, QOverload<int>::of(&QSpinBox::valueChanged), this, &tool::setTable2Rows); } void tool::setTableRows() { QAbstractItemModel* table1 = ui.tableView->model(); int rows = ui.spinBox->value(); model->setRowCount(rows); } void tool::setTable2Rows() { QAbstractItemModel* table2 = ui.tableView_2->model(); int rows2 = ui.spinBox_2->value(); model2->setRowCount(rows2); }
wrote on 3 May 2021, 19:30 last edited by JonB 5 Mar 2021, 19:37@n-2204 said in spinbox input add rows ??:
using this in spinbox value is 10 but the same no. of rows is not updated in my table
If I understand correctly.
At the time you call
ui.spinBox->setValue(10);
you have not yet done the
connect(ui.spinBox, QOverload<int>::of(&QSpinBox::valueChanged), this, &tool::setTableRows);
So if you are expecting the slot
setTableRows()
to be called to actually create rows during thesetValue()
, it won't be. Why should it?Either connect the signals before setting the values, or call the slots explicitly first time before you start out.
Is that what you mean?
-
@n-2204 said in spinbox input add rows ??:
using this in spinbox value is 10 but the same no. of rows is not updated in my table
If I understand correctly.
At the time you call
ui.spinBox->setValue(10);
you have not yet done the
connect(ui.spinBox, QOverload<int>::of(&QSpinBox::valueChanged), this, &tool::setTableRows);
So if you are expecting the slot
setTableRows()
to be called to actually create rows during thesetValue()
, it won't be. Why should it?Either connect the signals before setting the values, or call the slots explicitly first time before you start out.
Is that what you mean?
wrote on 4 May 2021, 04:26 last edited by@JonB said in spinbox input add rows ??:
@n-2204 said in spinbox input add rows ??:
using this in spinbox value is 10 but the same no. of rows is not updated in my table
If I understand correctly.
At the time you call
ui.spinBox->setValue(10);
you have not yet done the
connect(ui.spinBox, QOverload<int>::of(&QSpinBox::valueChanged), this, &tool::setTableRows);
So if you are expecting the slot
setTableRows()
to be called to actually create rows during thesetValue()
, it won't be. Why should it?Either connect the signals before setting the values, or call the slots explicitly first time before you start out.
ok understood
Is that what you mean?
yes
thanks
19/29