1 問題:加上Q_OBJECT后出現undefined reference to錯誤。
解決:重新編譯。
其他:信號槽的生效需要Q_OBJECT的支撐。
2 問題:如何彈出對話框。
解決:繼承QDialog,然后通過對象的exec來彈出。
分析:QWidget的模式與非模式區別:非模式窗口就是運行在應用程序中,對于任何其他窗口都是獨立窗口,用show()調用。模式窗口就是當它被調用而彈出的時候,它會阻塞這個應用程序,直到這個窗口被關閉,發生的其他任何處理或者交互才能繼續運行,用exec()調用。
3 問題:std::string與QString轉換。
解決:QString qstring = "Test String";
string stlstring = qstring.latin1()
QString qsecond = stlstring.c_str();
QString qstr = QString::fromStdString(str);
4 QLabel根據字符的長度決定是否顯示省略號"..."。
QFont font(ui->label->font());
QFontMetrics fm(font);
ui->label->setText(fm.elidedText(aaa, Qt::ElideRight, ui->label->width());
5 QGridLayout與控件的高度問題
用QGridLayout來調整布局,在設置了QGridLayout的layoutRowMinimumHeight為25后,其中部分控件的高度仍然沒有25。
QLabel:25,QDateEdit:20,QLineEdit:20,QComboBox:20
解決方法:
將QDateEdit,QLineEdit,QComboBox的屬性sizePolicy的垂直策略修改為Expanding即可。