簡體   English   中英

如何根據它的圖標大小調整QPushButton的大小?

[英]How to resize QPushButton according to the size of it's icon?

我需要帶有圖標的扁平QPushButton。 問題是按鈕的大小遠遠大於圖標的大小。 有沒有辦法根據圖標的大小設置按鈕的大小,而不使用幻數:

QIcon icon = GetIcon();
QPushButton* btn = new QPushButton( icon, "" ); 
btn->setFlat( true );
btn->setCheckable( true );

btn->setFixedSize( 16, 16 ); // These values should be calculated from the icon size.

試試這個。

QIcon ic("://icons/exit_6834.ico");
ui->pushButton_5->setFixedSize(ic.actualSize(ic.availableSizes().first()));//never larger than ic.availableSizes().first()
ui->pushButton_5->setText("");
ui->pushButton_5->setIcon(ic);
ui->pushButton_5->setIconSize(ic.availableSizes().first());
qDebug() << ic.availableSizes();

通常它是相反的,一個圖標應該提供不同的分辨率。 但要做你想做的事,你需要找到圖標支持的最接近的尺寸,給定初始尺寸作為參考。

static bool less(const QSize& a, const QSize&b)
{
   return a.width() < b.width(); 
}

QSize closestIconSize(const QIcon& icon, QSize initSize)
{
    QList<QSize> qlistSizes = icon.availableSizes();
    QList<QSize>::const_iterator it = std::lower_bound(
                                       qlistSizes.begin(), 
                                       qlistSizes.end(),
                                       less);
    return it != qlistSizes.end() ? *it : initSize;
}

由於圖標通常是方形的,您會注意到我提供的比較函數僅使用QSize對象中的寬度。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM