int main(int argc, char *argv[])
{
QApplication app(argc, argv);
MyWidget widget;
widget.show();
return app.exec();
}
MyWidget是个QMainWindow,上面只有一个QListWidget和一个QPushButton两个控件
MyWidget::MyWidget(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
connect(ui.pushButton,SIGNAL(clicked()),listWidget,SLOT(mySlot()));
ui.listWidget->setCurrentRow(-1); //设置QListWidget当前行 -1
}
MyWidget::mySlot()
{
//显示当前行数
QMessageBox::information(this,tr("curentRow"),QString("%1").arg(ui.listWidget->currentRow());
}
按照上面的代码,程序启动后,点pushButton(不对QListWidget做任何操作),弹出的消息框告诉当前行是0(而不为-1)!
现在,在designer中,再放置一个QGroupBox,然后将QlistWidget放到GroupBox中,(界面上总共三个控件),代码不做任何改动,重新编译,
运行程序,点pushButton(不对QListWidget做任何操作),
结果是: 弹出的消息框告诉当前行是-1。
我的问题是:
1、为什么会有这个差异? 当QListWidget是一个顶层窗口部件时,当前行自动由-1变为0;
2、main()函数中,widget.show() 这个show()函数具体执行了哪些操作?