解决方法:在button的slot函数中,从sender得到button指针,根据这个button的位置(x,y),由tablewidget->itemAt(x,y)可得到modelndex,其中itemAt不受scroll影响.用这个方法的好处是,从modelindex开始,能完全操作tablewidget. 由ModelIndex,来获取按钮button所在QTableWidget的行列数。 
void OPOSWidget::slotAddApp()
{
    QPushButton *pbt = dynamic_cast<QPushButton*>(this->sender());
    if(pbt == 0)
        return;
    int x = pbt->frameGeometry().x();
    int y = pbt->frameGeometry().y();
    QModelIndex index = ui->Application->indexAt(QPoint(x,y));
    int row = index.row();
    //int column = index.column();
    if(row == -1/* || column == -1*/)
        return;
    ui->Application->cellWidget(row,5)->setDisabled(true);
    ui->Application->cellWidget(row,5)->setDisabled(false);
    QString fileName = QFileDialog::getOpenFileName(this,tr("Open..."),"",tr("Compressed Files(*.zip);;Compressed Files(*.rar)"));
    if(fileName.isEmpty())
    {
        return;
    }
    m_Applist->addItem(fileName);
}