Qt 滚动区
来源:互联网 发布:tcp协议栈源码 编辑:程序博客网 时间:2024/05/22 13:46
QScrollArea类提供了一个可以滚动的可视窗口和两个滚动条。如果我们想给一个控件加上一个滚动条,从QScrollArea继承会比设计我们自己的QScrollBar类实现滚动函数更简单。
Figure 6.11. QScrollArea's constituent widgets
调用QScrollArea的setWidget()函数就能给控件加上滚动条。QScrollArea自动把控件设置为视图(viewport,QScrollArea::viewport()得到)的一个子控件。例如,如果我们想给第五章的IconEditor加上滚动条,我们可以这样写代码:
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
IconEditor *iconEditor = new IconEditor;
iconEditor->setIconImage(QImage(":/images/mouse.png"));
QScrollArea scrollArea;
scrollArea.setWidget(iconEditor);
scrollArea.viewport()->setBackgroundRole(QPalette::Dark);
scrollArea.viewport()->setAutoFillBackground(true);
scrollArea.setWindowTitle(QObject::tr("Icon Editor"));
scrollArea.show();
return app.exec();
在QScrollArea控件上显示控件的当前尺寸或者使用控件的sizeHint。调用setWidgetResizable(true),QScrollArea自动改变控件的大小。
当视图小于控件大小时,滚动条会自动出现。也可以设置滚动条一直显示:
scrollArea.setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
scrollArea.setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
Figure 6.12. Resizing a QScrollArea
QScrollArea继承了QAbstractScrollArea所有功能。QTextEdit和QAbstractItemView也是继承自QAbstractScrollArea,这些类不需要使用QScrollArea。
#ifndef FILEMANEGE_STATE_H
#define FILEMANEGE_STATE_H
#include <QScrollArea>
#include "button_base.h"
#include <QProcess>
class QFrame;
//class QScrollArea;
class QGridLayout;
class Document_manager_State : public QScrollArea
{
Q_OBJECT
public:
explicit Document_manager_State(QWidget *parent = 0);
virtual ~Document_manager_State();
void translatestring_state1();
QProcess *prcocess;
signals:
public slots:
void basebutton_clicked();
private:
// QScrollArea* scroll;
QFrame *frame;
QGridLayout *layout;
void createbuttons(void);
};
#endif // FILEMANEGE_STATE_H
#include "filemanege_state.h"
#include "Qtglobal.h"
#include <QtGui>
Document_manager_State::Document_manager_State(QWidget *parent) :
QScrollArea(parent)
{
// prcocess = new QProcess(this);
/* scroll = new QScrollArea(0);
frame = new QFrame(scroll);
scroll->setWidget(frame);
scroll->setWidgetResizable(true)*/
qDebug("filemanege :");
frame = new QFrame(this);
frame->setFrameStyle(QFrame::NoFrame);
frame->setLineWidth(0);
QVBoxLayout *vlayout = new QVBoxLayout(frame);
layout = new QGridLayout();
layout->setMargin(0);
layout->setHorizontalSpacing(50);
layout->setVerticalSpacing(10);
createbuttons();
vlayout->addLayout(layout);
QSpacerItem *verticalSpacer = new QSpacerItem(20, 452, QSizePolicy::Minimum, QSizePolicy::Expanding);
vlayout->addItem(verticalSpacer);
frame->setLayout(vlayout);
this->setWidget(frame);
this->setWindowFlags(Qt::SplashScreen);
this->setFrameStyle(QFrame::NoFrame);
// frame->setLayout(layout);
// scroll->show();
// QVBoxLayout *mainlayout=new QVBoxLayout;
// mainlayout->addWidget(scroll);
// this->setLayout(mainlayout);
// setWindowFlags(Qt::FramelessWindowHint);
this->setFixedSize(SCREEN_MAINWIDGET_WIDTH,SCREEN_MAINWIDGET_HEIGHT);
setGeometry(SCREEN_MAINWIDGET_GEOMETRY_X,SCREEN_MAINWIDGET_GEOMETRY_Y,SCREEN_MAINWIDGET_WIDTH,SCREEN_MAINWIDGET_HEIGHT);
}
Document_manager_State::~Document_manager_State()
{
}
void Document_manager_State::translatestring_state1()
{
}
void Document_manager_State::createbuttons(void)
{
QDir programDir = QDir(PROGRAM_PATH_CHECK);
QDir imageDir= QDir(PICTURE_PATH_DESK_CHECK);
QStringList files;
QIcon *icon;
static QString transName;
files = programDir.entryList(QStringList("*"),
QDir::Files | QDir::NoSymLinks|QDir::Executable);
int row,colum;
for (int i=0; i<files.size(); i++)
{
row=i/4;
colum=i%4;
qDebug("files[i] is %s",qPrintable(files[i]));
Button_Base *toolbutton=new Button_Base;
toolbutton->setFixedSize(60,80);
toolbutton->setText(files[i]);
icon=new QIcon;
if(imageDir.exists(files[i]+tr(".png")))
{
icon->addFile(tr(PICTURE_PATH_DESK_CHECK)+files[i]+".png");
}
else
{
icon->addFile(tr(PICTURE_PATH_DESK_CHECK)+"music.png");
}
toolbutton->setIcon(*(icon));
transName=QApplication::translate("Check_Sate",files[i].toLatin1().data());
toolbutton->setText(transName);
toolbutton->setObjectName(files[i]);
layout->addWidget(toolbutton,row,colum);
}
}
void Document_manager_State::basebutton_clicked()
{
prcocess->start("/opt/Qt/applications/programs/serial");
}
- Qt 滚动区
- 关于Qt中的滚动区设置
- QT 字幕滚动(左右滚动)
- Qt滚动效果
- qt隐藏滚动条
- Qt关于滚动条
- qt 设置滚动条
- Qt之滚动字幕
- Qt 字幕滚动程序
- QT滚动数字
- Qt实现滚动字幕
- QT 实现字幕滚动(上下滚动)
- Qt TreeView 添加滚动条
- Qt自绘滚动条
- Qt 自定义 滚动条 样式
- Qt——滚动条
- Qt 自定义 滚动条 样式
- Qt 自定义 滚动条 样式
- Tomcat内存溢出(java.lang.OutOfMemoryError: PermGen space)的解决办法
- 文章3:Nginx中与信号有关的内容
- Qt 触摸屏校准程序
- 黑马程序员--关于C#方法的注意事项
- android的首进程init
- Qt 滚动区
- 文章4:Nginx进程管理之 ngx_master_process_cycle分析
- 黑马程序员--C语言里的类型转换学习笔记
- 一个关于析构的容易犯错的作用域的程序
- 黑马程序员--详解结构和类的异同
- iOS 开发:真机测试
- 黑马程序员之SQL学习笔记:数据库基础知识点学习总结
- 优秀的NAS不光只有群晖,看看威联通在安全性上如何K掉群晖
- smarty缓存复习代码