2010-09-26 42 views
2
this->setWindowTitle(tr("數據轉移程序")); 
edt_ftp_server = new QLineEdit; 
edt_ftp_port = new QLineEdit; 
edt_ftp_account = new QLineEdit; 
edt_ftp_pwd = new QLineEdit; 
edt_ftp_pwd->setEchoMode(QLineEdit::Password); 

lbl_ftp_server = new QLabel; 
lbl_ftp_server->setText(tr("FTP服務器地址:")); 
lbl_ftp_server->setBuddy(edt_ftp_server); 

lbl_ftp_port = new QLabel; 
lbl_ftp_port->setText(tr("FTP服務器端口:")); 
lbl_ftp_port->setBuddy(edt_ftp_port); 

lbl_ftp_account = new QLabel; 
lbl_ftp_account->setText(tr("FTP登錄帳號:")); 
lbl_ftp_account->setBuddy(edt_ftp_account); 

lbl_ftp_pwd = new QLabel; 
lbl_ftp_pwd->setText(tr("FTP登錄密碼:")); 
lbl_ftp_pwd->setBuddy(edt_ftp_pwd); 

ftp_settings = new QGroupBox(this); 
ftp_settings->setTitle(tr("FTP服務器設置")); 
ftp_settingsLayout = new QGridLayout; 
ftp_settingsLayout->addWidget(lbl_ftp_server, 0, 0); 
ftp_settingsLayout->addWidget(edt_ftp_server, 0, 1); 
ftp_settingsLayout->addWidget(lbl_ftp_port, 1, 0); 
ftp_settingsLayout->addWidget(edt_ftp_port, 1, 1); 
ftp_settingsLayout->addWidget(lbl_ftp_account, 2, 0); 
ftp_settingsLayout->addWidget(edt_ftp_account, 2, 1); 
ftp_settingsLayout->addWidget(lbl_ftp_pwd, 3, 0); 
ftp_settingsLayout->addWidget(edt_ftp_pwd, 3, 1); 

ftp_settings->setLayout(ftp_settingsLayout); 

edt_db_server = new QLineEdit(this); 
edt_db_port = new QLineEdit(this); 
edt_db_account = new QLineEdit(this); 
edt_db_pwd = new QLineEdit(this); 
edt_db_pwd->setEchoMode(QLineEdit::Password); 

lbl_db_server = new QLabel(this); 
lbl_db_server->setText(tr("FTP服務器地址:")); 
lbl_db_server->setBuddy(edt_ftp_server); 

lbl_db_port = new QLabel(this); 
lbl_db_port->setText(tr("FTP服務器端口:")); 
lbl_db_port->setBuddy(edt_ftp_port); 

lbl_db_account = new QLabel(this); 
lbl_db_account->setText(tr("FTP登錄帳號:")); 
lbl_db_account->setBuddy(edt_ftp_account); 

lbl_db_pwd = new QLabel(this); 
lbl_db_pwd->setText(tr("FTP登錄密碼")); 
lbl_db_pwd->setBuddy(edt_ftp_pwd); 

db_settings = new QGroupBox(this); 
db_settings->setTitle(tr("數據庫服務器設置")); 
db_settingsLayout = new QGridLayout; 
db_settingsLayout->addWidget(lbl_ftp_server, 0, 0); 
db_settingsLayout->addWidget(edt_ftp_server, 0, 1); 
db_settingsLayout->addWidget(lbl_ftp_port,1, 0); 
db_settingsLayout->addWidget(edt_ftp_port,1, 1); 
db_settingsLayout->addWidget(lbl_ftp_account, 2, 0); 
db_settingsLayout->addWidget(edt_ftp_account, 2, 1); 
db_settingsLayout->addWidget(lbl_ftp_pwd,3, 0); 
db_settingsLayout->addWidget(edt_ftp_pwd, 3, 1); 

db_settings->setLayout(db_settingsLayout); 

buttonsLayout = new QHBoxLayout; 
buttonsLayout->addStretch(); 

btn_start = new QPushButton; 
btn_start->setText(tr("開始")); 
buttonsLayout->addWidget(btn_start); 

btn_stop = new QPushButton; 
btn_stop->setText(tr("停止")); 
buttonsLayout->addWidget(btn_stop); 

btn_exit = new QPushButton; 
btn_exit->setText(tr("退出")); 
buttonsLayout->addWidget(btn_exit); 

settingLayout = new QVBoxLayout; 
settingLayout->addWidget(db_settings); 
settingLayout->addStretch(); 
settingLayout->addWidget(ftp_settings); 

centralLayout = new QHBoxLayout; 
centralLayout->addLayout(settingLayout); 
lst_log = new QListWidget; 
centralLayout->addWidget(lst_log); 

winLayout = new QVBoxLayout; 
winLayout->addLayout(centralLayout); 
winLayout->addLayout(buttonsLayout); 
setLayout(winLayout); 

我正在開發一個小型的qt程序,並在QMainWindow子類構造函數中寫了上面的代碼。 但顯示的小部件都搞砸了。所有的建議表示讚賞!爲什麼QT中的佈局管理器不起作用?

以下是截圖的結果:

alt text

+0

爲什麼不使用Qt Creator?它允許在表單設計模式下生成佈局代碼。 – 2010-09-26 14:30:55

+0

它不是QT(QuickTime),它是Qt(框架)。 – 2010-09-26 14:47:35

回答

2

我懷疑問題出在頂層佈局,這是winLayout。設置QMainWindow的中央小部件winLayout的父:

winLayout = new QVBoxLayout(ui->centralWidget); 

我建議使用Qt Creator或Qt設計師設計的用戶界面。 Qt Creator爲佈局和其他無趣的事物創建必要的代碼。即使您決定通過編寫自己的代碼來創建用戶界面,您也可以使用Qt Creator創建原型並查看它創建的代碼類型。

+0

感謝您的回答!當我使用Qt Creator時,設計界面上的loyouts實際上很難處理。這真的讓我很煩惱! – Liu 2010-09-27 00:33:17