Qt—QPushButton 使用總結


設置位置和大小

// 重新設定按鈕的位置
pBtnTest->move(100, 50);

// 重新設定按鈕的大小
pBtnTest->resize(80, 50);

// 設置按鈕的位置和大小
pBtnTest->setGeometry(100, 50, 80, 50);

設置顯示文本信息的字體

pBtnTest->setFont(QFont("宋體", 18));

根據文本長度自動調整大小

pBtnTest->setText("我是一個很長很長很長的文本");
    
// adjustSize():自動調整控件的大小,以適應其內容;
pBtnTest->adjustSize();

設置按鈕獲取焦點

// 設置控件獲取焦點
pBtnTest->setFocus();

// 獲取控件是否具有焦點;如果控件有焦點,返回 true;
bool b = pBtnTest->hasFocus();
qDebug() << b;

// 清除控件的焦點
pBtnTest->clearFocus();

設置鼠標位於按鈕區域時,光標的類型

pBtnTest->setCursor(QCursor(Qt::BusyCursor));

設置按鈕的 禁用 和 啟用

// 禁用控件
pBtnTest->setDisabled(true);

// 啟用控件
pBtnTest->setEnabled(true);

設置按鈕背景透明:即將按鈕外觀設為平鋪

pBtnTest->setFlat(true);

設置在控件上按下 回車鍵 時,響應控件的 click 事件

pBtnTest->setDefault(true);

設置按鈕上顯示的圖標

// 設置按鈕上顯示的圖標
pBtnTest->setIcon(QIcon(":/Image/Luffy.png"));

// 設置圖標的大小
pBtnTest->setIconSize(QSize(24, 24));

設置可選按鈕

auto earMonitorSwitch = new QPushButton(this);
earMonitorSwitch->setCheckable(true);
earMonitorSwitch->setStyleSheet("QPushButton{border-image:url(./resource/audio/audio_setting/btn_earmonitor_close.png);}"
"QPushButton:checked{border-image:url(./resource/audio/audio_setting/btn_earmonitor_open.png);}");

設置不同狀態下的通用CSS

pBtnTest->setStyleSheet("QPushButton{border-image:url(./resource/audio/audio_setting/close_normal.png);border:none;}"
		"QPushButton:hover{border-image:url(./resource/audio/audio_setting/close_hover.png);}"
		"QPushButton:pressed{border-image:url(./resource/audio/audio_setting/close_press.png);}");

設置按鈕樣式:前景色,背景色,邊框等

// 定義初始樣式集合
QStringList list;
list.append("color:white");                         // 前景色
list.append("background-color:rgb(85,170,255)");    // 背景色
list.append("border-style:outset");                 // 邊框風格
list.append("border-width:5px");                    // 邊框寬度
list.append("border-color:rgb(10,45,110)");         // 邊框顏色
list.append("border-radius:20px");                  // 邊框倒角
list.append("font:bold 30px");                      // 字體
list.append("padding:4px");                         // 內邊距

// 設置按鈕初始樣式
pBtnTest->setStyleSheet(list.join(';'));                      
 
// 按鈕按下時修改樣式
list.replace(6, "font:bold 35px");
connect(pBtnTest, &QPushButton::pressed, [=](){
       pBtnTest->setStyleSheet(list.join(';'));
});

// 按鈕彈起時恢復樣式
list.replace(6, "font:bold 30px");
connect(pBtnTest, &QPushButton::released, [=](){
       pBtnTest->setStyleSheet(list.join(';'));
});

為按鈕添加右鍵菜單

auto button = new QPushButton(u8"按鈕");
button->setContextMenuPolicy(Qt::ActionsContextMenu);
if (type == AccomSoundType::mySound)
{
	auto deleteAction = new QAction(left);
	deleteAction->setText(u8"刪除");
	connect(deleteAction, &QAction::triggered, this, [=]() {
		trace("刪除");
	});
	button->addAction(deleteAction);
}

為按鈕添加左鍵菜單

// 菜單
QMenu *pMenu = new QMenu(this);
pMenu->addAction(QString::fromLocal8Bit("設置"));
pMenu->addAction(QString::fromLocal8Bit("版本檢測"));
pMenu->addSeparator();
pMenu->addAction(QString::fromLocal8Bit("關於我們"));
pMenu->addAction(QString::fromLocal8Bit("退出"));

// 按鈕
QPushButton *pButton = new QPushButton(this);
pButton->setText(QString::fromLocal8Bit("主菜單"));

// 設置菜單
pButton->setMenu(pMenu);

上面的方法會讓按鈕顯示一個下拉的三角形圖標,如果想取消這個圖片可以用 qss 去除:

QPushButton::menu-indicator#btn_room_setting{
	image:none;
}

參考:

Qt學習筆記(十五):QPushButton 按鈕的常用方法

QT QPushButton



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM