2013-12-13 188 views
2

如何更改QFileDialog中按鈕的大小?我嘗試了下面的代碼;它編譯,但如果我嘗試加載文件對話,應用程序意外退出。調整QFileDialog佈局中的按鈕窗口小部件大小

請讓我知道什麼是錯的。我是QT新手。 :(

 QFileDialog *fdiag = new QFileDialog(); 
     QGridLayout *glayout = static_cast <QGridLayout*>(fdiag->layout()); 

     QLayoutItem *li = glayout->itemAtPosition(3,3); 

     QRect buttonRect = li->geometry() ; 
     int newHeight = buttonRect.height() + 20; 
     int newWidth = buttonRect.height() + 20; 
     buttonRect.setHeight(newHeight); 
     buttonRect.setWidth(newWidth); 
     li->setGeometry(buttonRect); 

     fdiag->resize(720,480); 
     fdiag->setWindowTitle("Media Folder"); 

     fdiag->exec(); 

回答

4

你可以只使用一個樣式表:

QFileDialog *fdiag = new QFileDialog; 
fdiag->setStyleSheet("QPushButton{min-height: 40px; min-width: 200px;}"); 

或者,如果你要調整大小隻有特定的按鈕:

QDialogButtonBox *box = fdiag->findChild<QDialogButtonBox*>(); 
if(box) 
{ 
    QPushButton *button = box->button(QDialogButtonBox::Open); 
    if(button) 
    { 
     button->setMinimumHeight(40); 
     button->setMinimumWidth(200); 
    } 
} 
+0

偉大的,工作。謝謝。 – Bhush

+0

如何使用setStyleSheet更改QFileDialog的字體屬性?如果可以發佈代碼,那就太好了。 – Bhush

+0

@Bush你需要更具體。什麼字體?按鈕?或者整個對話? – thuga

0

正如我最近買了這個問題,與Qt5 - 由於Qt4中的某些原因,它的工作原理 - 您需要確保Qt從layout()返回不爲NULL。

您需要用選項QFileDialog::DontUseNativeDialog初始化系統對話框,例如,與dlg->setOption(QFileDialog::DontUseNativeDialog, true);

相關問題