设置对话框按键
setWindowFlags(windowFlags()&~Qt::WindowCloseButtonHint&~Qt::WindowContextHelpButtonHint);//只有关闭
setWindowFlags(Qt::CustomizeWindowHint | Qt::WindowMinimizeButtonHint | Qt::WindowMaximizeButtonHint);//不能关闭,有最小最大
setWindowModality(Qt::ApplicationModal);//设置窗体模态,要求该窗体没有父类,否则无效setWindowFlags(Qt::Tool );//设置任务栏不显示
设置字体
QFont font;
font.setPointSize(12);
ui->label_3->setFont(font);
//编码方式和显示位置
#include <QtGui/QApplication>
#include "load.h"
#include <QDesktopWidget>
#include <QSplashScreen>
int main(int argc, char *argv[])
{
//QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));
QTextCodec *codec = QTextCodec::codecForName("GBK");
QTextCodec::setCodecForLocale(codec);
QTextCodec::setCodecForCStrings(codec);
QTextCodec::setCodecForTr(codec);
QApplication a(argc, argv);
QSplashScreen *splash = new QSplashScreen;
splash->setPixmap(QPixmap("F:\\Windows QT\\Notepad\\start.jpg"));
splash->show();//启动画面
load w;
w.move ((QApplication::desktop()->width() - w.width())/2,(QApplication::desktop()->height() - w.height())/2);
w.show();
splash->finish(&w);
delete splash;
return a.exec();
}
this->setFixedSize( 400,300);//设置界面大小
QMenu *popMenu;//指定区域右键菜单popMenu = new QMenu(ui->tableView_2);ui->tableView_2->setContextMenuPolicy(Qt::CustomContextMenu);void MainWindow::on_tableView_2_customContextMenuRequested(const QPoint &pos){popMenu->addAction(timesetAction);popMenu->exec(QCursor::pos());//在当前鼠标位置显示}QWidget及其子类都可有右键菜单,因为QWidget有以下两个与右键菜单有关的函数:
Qt::ContextMenuPolicy contextMenuPolicy () const
void setContextMenuPolicy ( Qt::ContextMenuPolicy policy )
Qt::ContextMenuPolicy 枚举类型包括:Qt::DefaultContextMenu, Qt::NoContextMenu, Qt::PreventContextMenu, Qt::ActionsContextMenu, and Qt::CustomContextMenu。
使用方式如下:
1)默认是Qt::DefaultContextMenu。它是利用右键菜单事件contextMenuEvent()来处理(which means the contextMenuEvent() handler is called)。就是要重写contextMenuEvent( QContextMenuEvent * event )函数。
---->通过事件QContextMenuEvent完成
2)使用Qt::CustomContextMenu。它是发出QWidget::customContextMenuRequested信号,注重仅仅只是发信号,意味着要自己写显示右键菜单的slot。这个信号是 QWidget唯一与右键菜单有关的信号(也是自有的唯一信号),同时也是很轻易被忽略的signal:
void customContextMenuRequested ( const QPoint & pos )
该信号的发出条件是:用户请求contextMenu(常规就是鼠标右击啦)且同时被击的widget其contextMenuPolicy又是 Qt::CustomContextMenu。注重:pos是该widget接收右键菜单事件的位置,一般是在该部件的坐标系中。但是对于QAbstratScrollArea及其子类例外,是对应着其视口viewport()的坐标系。如常用的QTableView、QHeaderView就是QAbstratScrollArea的子类。因为仅发信号,所以需自己写显示右键菜单的slot来响应。
---->通过信号槽完成
3)使用 Qt::ActionsContextMenu。把部件的所有 action即QWidget::actions()作为context menu显示出来。
---->通过setContextMenuPolicy(Qt::ActionsContextMenu)完成
1.重写paintEvent()事件void MainWin::paintEvent(QPaintEvent *event){
QPainter painter(this);painter.drawPixmap(0,0,width(),height(),QPixmap("./wallpaper/11.jpg"));}
2.使用调色板类QPalette
//以下代码中pWidget为指向要设置的widget的指针。
QPalette palette = pWidget->palette();
palette->setBrush(QPalette::Active,QPalette::Window,QBrush(Qt::red))
pWidget->setPalette(palette);
pWidget->setAutoBackground(true);
推荐使用这种方法,大家可以查看一下setBrush()方法的定义:
Palette::setBrush ( ColorGroup group, ColorRole role, const QBrush & brush )
这个是一个重载版本,最为重要的是第二个参数,可以设置许多不同的类型。举例来说,如果pWidget指向的是一个QListWidget或者QTextEdit对象,如果把第二个参数设置成QPalette::Text,则是设置其中文字的颜色;如果第二个参数是QPalette::BrightText,则是设置该对象被选中时,其文字的颜色;如果第二个参数QPalette::Bright则表示设置选中该对象时,高亮背景的颜色或者图片。该函数的功能是很强大的。
3.使用样式表。
pWidget->setStyleSheet("background-color:blue;"); //设置背景颜色
pWidget->setStyleSheet("background-image:url(:/folder/show.bmp);"); //设置背景图片
此外,还有一些很有意思的方法,比如用setHtml(),insetHtml()这种用HTML语言的方式来指定的等等,大家可以多查查帮助文档搜索一下。尽量不要在MainWindow中使用setStyleSheet()!
4.具体例子
//设置为固定颜色
QPalette pal = pWidget->palette();
pal.setColor(QPalette::Background, QColor(0,0,0)); //黑色
pWidget->setPalette( pal );
//背景图片
QPalette pal = pWidget->palette();
pal.setBrush( QPixmap(图片文件名) ); //黑色
pWidget->setPalette( pal );