2012-06-25 42 views
1

我想在QT中列出一个工具按钮。工具按钮应出现在scollarea中。这个列表应该在点击一个按钮时出现。我已经完成了代码并且工作正常,我不得不按两次按钮才能让列表出现。这里是我的代码:必须推QPushbutton两次

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

    find_btn.setParent(ui->centralWidget); 
    find_btn.setGeometry(480,250,130,132); 

    viewport.setLayout(&scrollLayout); 

    scrollArea.setParent(ui->centralWidget); 
    scrollArea.setGeometry(0,116,339,404); 
    scrollArea.setWidget(&viewport); 

    connect(&find_btn,SIGNAL(clicked()),this,SLOT(import())); 
} 

void MainWindow::import() 
{ 
    button.setCheckable(true); 
    button.setMinimumSize(317,60); 

    button2.setCheckable(true); 
    button2.setMinimumSize(317,60); 

    scrollLayout.addWidget(&button); 
    scrollLayout.addWidget(&button2); 

    viewport.adjustSize(); 
} 

所以当我按下“find_btn”,用按钮scrollarea内应该会出现。此刻带有按钮的滚动条出现了,但是仅在我点击了两次“find_btn”之后。

我想我必须更新scrollarea或类似的东西。也许连接导致问题?任何人都可以帮忙吗?

回答

0

有几个选项,你可以尝试:

viewport.update(); 

scrollArea.viewport()->update(); 

QApplication::processEvents(QEventLoop::ExcludeUserInputEvents); 

或它们的任意组合。

很可能只有在再次按下按钮强制重绘之前才会重绘GUI。

+0

嗯我试过了,但似乎没有任何工作。我注意到,当我删除viewport.adjustSize()时,我不必点击两次。但是,那么视口的大小是错误的。我通过调整大小来修复这个问题,但我觉得这不是最好的解决方案。 – Frank

+0

您是否在adjustSize()调用后尝试调用'processEvents'? –

+0

是仍然没有效果。我使用resize函数解决了问题。 – Frank