运行程序时怎么让qt指定显示qt tabwidget 切换的第一页

QT怎么将tabwidget控件tab标-中国学网-中国IT综合门户网站
> 信息中心 >
QT怎么将tabwidget控件tab标
来源:互联网 发表时间: 19:12:53 责任编辑:王亮字体:
为了帮助网友解决“QT怎么将tabwidget控件tab标”相关的问题,中国学网通过互联网对“QT怎么将tabwidget控件tab标”相关的解决方案进行了整理,用户详细问题包括:RT,我想知道:QT怎么将tabwidget控件tab标签栏置底,具体解决方案如下:解决方案1:如图,我想将Tab 1和Tab 2这两标签弄到底部该怎么操作,知道的请不吝赐教,谢谢~
2个回答1个回答1个回答1个回答1个回答2个回答1个回答1个回答2个回答1个回答无回答1个回答1个回答1个回答1个回答1个回答1个回答1个回答1个回答
相关文章:
最新添加资讯
24小时热门资讯
Copyright © 2004- All Rights Reserved. 中国学网 版权所有
京ICP备号-1 京公网安备02号qt使用tab管理多个界面
要求实现多个页面之间的切换
打算采用tab页来管理多个页面,并隐藏tab头
#include mytab.h
int main(int argc, char *argv[])
QApplication a(argc, argv);
return a.exec();
#ifndef MYTAB_H
#define MYTAB_H
#include ui_mytab.h
#include pagemain.h
#include pageend.h
#include pageset.h
#include mydefine.h
class mytab : public QMainWindow
typedef boost::bimap MapPageI
mytab(QWidget *parent = 0);
private slots:
void pagechange(E_TAB_PAGE page);
E_TAB_PAGE pagetype();
protected:
virtual void resizeEvent(QResizeEvent * event);
QTabWidget
//管理tab:&交接班&和&设置&
//主页面部分
//交接部分
//设置部分
MapPageIndex
m_mapPageI
//页面和tab索引进行绑定
void init();
void resize();
Ui::mytabC
#endif // MYTAB_H
#include mytab.h
mytab::mytab(QWidget *parent)
: QMainWindow(parent), m_pageMain(parent),m_pageSet(parent),m_pageEnd(parent)
ui.setupUi(this);
connect(&m_pageMain, SIGNAL(pagechange(E_TAB_PAGE)), this, SLOT(pagechange(E_TAB_PAGE)));
connect(&m_pageEnd, SIGNAL(pagechange(E_TAB_PAGE)), this, SLOT(pagechange(E_TAB_PAGE)));
connect(&m_pageSet, SIGNAL(pagechange(E_TAB_PAGE)), this, SLOT(pagechange(E_TAB_PAGE)));
//这里可以发送两次信号 这样不实时
m_pageEnd.init(this);
m_pageMain.init(this);
m_pageSet.init(this);
mytab::~mytab()
void mytab::init()
//m_mapPageIndex.clear();
//对tab进行设置下这里要
//必须设置父类,否则tab显示为另一个窗口
m_tabWidget.setParent(this);
m_tabWidget.setStyleSheet(
QTabWidget::pane{border: 0}
QTabWidget::tab-bar{alignment:}
QTabBar::tab{background: color: min-width:30 min-height:10}
QTabBar::tab:hover{background:rgb(255, 255, 255, 100);}
QTabBar::tab:selected{border-color:background:color:});
//隐藏QTabWidget,否则主窗口被覆盖
//m_tabWidget.hide();
m_tabWidget.tabBar()-&hide();
//设置tab可关闭
m_tabWidget.setTabsClosable(true);
int nindex = -1;
nindex = m_tabWidget.addTab(&m_pageMain,tr(pagemain));
if (nindex != -1)
m_mapPageIndex.insert(MapPageIndex::value_type(E_MAIN_PAGE, nindex));
//m_mapPageIndex[E_MAIN_PAGE] =
nindex = m_tabWidget.addTab(&m_pageSet,tr(pageset));
if (nindex != -1)
m_mapPageIndex.insert(MapPageIndex::value_type(E_SET_PAGE, nindex));
//m_mapPageIndex[E_SET_PAGE] =
nindex = m_tabWidget.addTab(&m_pageEnd,tr(pageend));
if (nindex != -1)
m_mapPageIndex.insert(MapPageIndex::value_type(E_END_PAGE, nindex));
//m_mapPageIndex[E_END_PAGE] =
//显示QTabWidget
m_tabWidget.show();
QRect rtClient = this-&geometry();
m_tabWidget.setGeometry(rtClient);
m_pageMain.setGeometry(rtClient);
pagechange(E_MAIN_PAGE);
void mytab::resizeEvent(QResizeEvent * event)
void mytab::resize()
QSize szClient = this-&size();
m_tabWidget.setGeometry(0, 0, szClient.width(), szClient.height());
QWidget *ptab = m_tabWidget.currentWidget();
if (ptab != nullptr)
ptab-&setGeometry(0, 0, szClient.width(), szClient.height());
void mytab::pagechange(E_TAB_PAGE page)
//这里查询左map
MapPageIndex::left_const_iterator it = m_mapPageIndex.left.find(page);
if (it != m_mapPageIndex.left.end())
m_tabWidget.setCurrentIndex(it-&second);
E_TAB_PAGE mytab::pagetype()
E_TAB_PAGE page = E_INVALID_PAGE;
int nindex = m_tabWidget.currentIndex();
if (nindex != -1)
MapPageIndex::right_const_iterator it = m_mapPageIndex.right.find(nindex);
if (it != m_mapPageIndex.right.end())
page = it-&
pagemain.h
#ifndef PAGEMAIN_H
#define PAGEMAIN_H
#include ui_pagemain.h
#include mydefine.h
class PageMain : public QWidget
PageMain(QWidget *parent = 0);
~PageMain();
void init(QWidget *pParent);
void pagechange(E_TAB_PAGE page);
private slots:
void on_endButton_clicked();
void on_setButton_clicked();
void on_typeButton_clicked();
QWidget *m_pP
#endif // PAGEMAIN_H
pagemain.cpp
#include pagemain.h
#include mytab.h
PageMain::PageMain(QWidget *parent)
: QWidget(parent)
ui.setupUi(this);
m_pParent =
PageMain::~PageMain()
void PageMain::on_endButton_clicked()
emit this-&pagechange(E_END_PAGE);
void PageMain::on_setButton_clicked()
emit this-&pagechange(E_SET_PAGE);
void PageMain::on_typeButton_clicked()
if (m_pParent != nullptr)
E_TAB_PAGE page = ((mytab *)m_pParent)-&pagetype();
QString strMsg();
strMsg = QString(%1).arg(page);
QMessageBox::information(this, page, strMsg);
void PageMain::init(QWidget *pParent)
m_pParent = pP
mydefine.h
#ifndef MY_DEFINE_H
#define MY_DEFINE_H
typedef enum eTabPages
E_MAIN_PAGE,
E_SET_PAGE,
E_END_PAGE,
E_INVALID_PAGE
}E_TAB_PAGE;
PageSet和PageEnd与PageMain较为相似 不进行上传
1.tab中的widget必须要有父类(否则可能会出现问题)
2.项目牵涉到由类型找tab索引和tab索引查找类型 故使用了boost的bimap来实现双向查找
3.在vs2010+qt5.40+win7上编译通过10:03 提问
QT中QListWidget窗口中条目更新,如何让它动态显示出来
我做的是一个公交车报站系统,在点击完模拟按钮后,会模拟走完整条路线,但是QListWidget不会动态更新,其中的数据处理部分还是会进行
附上模拟按钮的代码
/* simulate */
void MyDialog::on_pushButton_3_clicked()
// 先清空显示
ui-&listWidget-&clear();
QFile file("bus_.xml");
if (!file.open(QIODevice::ReadOnly))
if (!doc.setContent(&file))
file.close();
file.close();
QDomElement docElem = doc.documentElement();
int flag=0, count=0;
QDomNode n = docElem.firstChild();
while(!n.isNull())
if (n.isElement())
QDomElement e = n.toElement();
QDomNodeList list = e.childNodes();
if (flag == 1)
for(int i=0; i&list.count(); i++)
QDomNode node = list.at(i);
if(node.isElement())
if (i == number)
qDebug()&&
//ui-&listWidget-&addItem(new QListWidgetItem(QIcon("yuan.jpg"), node.toElement().text()));
ui-&listWidget-&setCurrentItem(new QListWidgetItem(QIcon("yuan.jpg"), node.toElement().text()));
curstation = node.toElement().text();
qDebug()&&"next station"&&
//ui-&listWidget-&addItem("
" + node.toElement().text());
ui-&listWidget-&setCurrentItem (new QListWidgetItem(QIcon("yuan.jpg"), node.toElement().text()));
QDomNode node_count = list.at(0);
count = node_count.toElement().text().toInt();
//qDebug()&&
n = n.nextSibling();
//char command[256] = {0};
command = _config_2() +
qDebug()&&
/* yuying */
tts_open_test("/dev/ttyUSB0", (char *)command.toStdString().c_str());
/* net_demo_string */
/* string shuld be utf-8 */
net_demo_string((char *)command.toStdString().c_str());
qDebug()&&"net_demo_string";
/* maybe change */
QByteArray datagram = curstation.toStdString().c_str();
sender-&writeDatagram (datagram.data(), datagram.size(), QHostAddress::Broadcast, 45454);
if (count == number)
ui-&listWidget-&update ();
其他相似问题
相关参考资料运行程序时怎么让qt指定显示tabwidget的第一页?一运行程序就是显示程序里面编辑页面的那一页_百度知道
运行程序时怎么让qt指定显示tabwidget的第一页?一运行程序就是显示程序里面编辑页面的那一页
我有更好的答案
序关闭时,软件启动时读取配置文件,记录下当前编辑的页,调用QSetting写一个配置文件存到软件目录下,设置到上次记录的页
额,我是想显示首页,不是编辑的那一页,现在编辑哪一页默认运行就是显示那一页。。
这个问题很简单,你在编译程序之前,将GUI中停留在你想要的那一页,然后编译程序,可执行程序就是根据你编译时停留在哪页就以那一页为GUI开始运行的第一页了
其他类似问题
为您推荐:
运行程序的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 qt tabwidget美化 的文章

 

随机推荐