2014-03-07 39 views
0

我試圖在我的應用程序中創建超鏈接。我有兩個標籤,其中一個是超鏈接。將文本保存在一個QHBoxLayout中

labelPropulsedBy = new QLabel(); 
    labelPropulsedBy->setText(tr("Propulsé par ")); 
    labelPropulsedBy->setLayout(hboxLayout); 

labelWebLink = new QLabel(); 
    labelTripleGear->setText("<a href=\"https://www.google.ca/\">Click Here!</a>"); 
    labelTripleGear->setTextFormat(Qt::RichText); 
    labelTripleGear->setTextInteractionFlags(Qt::TextBrowserInteraction); 
    labelTripleGear->setOpenExternalLinks(true); 
    labelTripleGear->setLayout(hboxLayout); 

問題是,當我調整窗口大小時,這兩個標籤會分離,就像它們之間有很多間距一樣。你怎麼把它們放在一起?

如果有更好的方法可以做到這一點,請提出,我試圖改善我的編碼習慣。

回答

1

創建一個新的水平間距並將其添加到超鏈接標籤(或文本標籤的前面)後,這將解決您的問題。該代碼可能看起來像:

QSpacerItem *horizontalSpacer; 
horizontalSpacer = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum); 
hboxlayout->addItem(horizontalSpacer); 

此外,我建議使用設計師accerlate您的應用程序設計速度!

+0

它工作。謝謝。我不使用設計師,因爲我是編程新手,直接在代碼上工作可以幫助我學習新東西。你能解釋爲什麼它做了它做的?我可以認爲這是因爲當我擴大我的窗口時,只有QSpacerItem擴展,而不是完整的佈局,對不對? – Chax

+1

類QSpacerItem服務器作爲佈局中多餘空間的容器,因此在您的情況下,當hboxLayout擴展時,間隔將延伸(垂直間隔符相同)。對於佈局包含同一方向上的多個間隔器,Qt有自己的機制來決定如何擴展它們。您可以在應用程序中添加多個分隔符以查看它們的工作方式。有關更多信息,請查看:[http://qt-project.org/doc/qt-4.8/qspaceritem.html#details](http://qt-project.org/doc/qt-4.8/qspaceritem。 HTML#細節) – Tay2510

相關問題