当前位置: 首页>>代码示例>>C++>>正文


C++ WTable::setStyleClass方法代码示例

本文整理汇总了C++中WTable::setStyleClass方法的典型用法代码示例。如果您正苦于以下问题:C++ WTable::setStyleClass方法的具体用法?C++ WTable::setStyleClass怎么用?C++ WTable::setStyleClass使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在WTable的用法示例。


在下文中一共展示了WTable::setStyleClass方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: printSeries

void BasePage::printSeries(const Dbo::collection<Dbo::ptr<Seria> >& listseries){
	WTable *seriaTable = new WTable();
	seriaTable->setHeaderCount(1);
	seriaTable->setStyleClass("tablestyle");
	seriaTable->elementAt(0, 0)->addWidget(new WText("<p align='left'> # </p>"));
	seriaTable->elementAt(0, 1)->addWidget(new WText("<p align='left'> Name of seria </p>"));
	seriaTable->elementAt(0, 2)->addWidget(new WText("<p align='left'> Number of books </p>"));
	_pagecontent->addWidget(seriaTable);
	int row=1;
	for (Dbo::collection<Dbo::ptr<Seria> >::const_iterator i = listseries.begin(); i != listseries.end(); ++i){
			Dbo::ptr<Seria> Seria = *i;
			seriaTable->setStyleClass("tablestyle th,td,tr");
			//headers
			seriaTable->elementAt(row, 0)
			->addWidget(new WText(WString::fromUTF8("{1}")
					  .arg(row)));
			//genre
			seriaTable->elementAt(row, 1)
			->addWidget(new WText(WString::fromUTF8(Seria.get()->seria)));
			//num of books in seria
			seriaTable->elementAt(row, 2)
			->addWidget(new WText(WString::fromUTF8("{1}")
				      .arg((Seria.get()->numOfBooks))));
			_pagecontent->addWidget(seriaTable);	
			row++;
	}
}
开发者ID:leshkajou,项目名称:bookrate,代码行数:27,代码来源:basepage.cpp

示例2: printAuthors

void BasePage::printAuthors(const Dbo::collection<Dbo::ptr<Author> >& listauthors){
	WTable *authTable = new WTable();
	authTable->setHeaderCount(1);
	authTable->setStyleClass("tablestyle");
	authTable->elementAt(0, 0)->addWidget(new WText("<p align='left'> # </p>"));
	authTable->elementAt(0, 1)->addWidget(new WText("<p align='left'> Full name or pseudo </p>"));
	authTable->elementAt(0, 2)->addWidget(new WText("<p align='left'> Years of life </p>"));
	_pagecontent->addWidget(authTable);
	int row=1;
	for (Dbo::collection<Dbo::ptr<Author> >::const_iterator i = listauthors.begin(); i != listauthors.end(); ++i){
			Dbo::ptr<Author> Author = *i;
			authTable->setStyleClass("tablestyle th,td,tr");
			//headers
			authTable->elementAt(row, 0)
			->addWidget(new WText(WString::fromUTF8("{1}")
					  .arg(row)));
			//name
			authTable->elementAt(row, 1)
			->addWidget(new WText(WString::fromUTF8(Author.get()->name)));
			//authors
			authTable->elementAt(row, 2)
			->addWidget(new WText(WString::fromUTF8("{1}")
				      .arg((Author.get()->years))));
			_pagecontent->addWidget(authTable);	
			row++;
	}
}
开发者ID:leshkajou,项目名称:bookrate,代码行数:27,代码来源:basepage.cpp

示例3: AppendRows

//添加栏目
bool WSVFlexTable::AppendRows(std::string strColName)
{
	if(GetContentTable()!=NULL)
	{
		int iLast = GetContentTable()->numRows();
		
		//栏
		iLast++;
		WTable * pTmpTable = new WTable((WContainerWidget *)GetContentTable()->elementAt(iLast, 0));

		//栏名称		
		pTmpTable->elementAt(0, 0)->setStyleClass("padding_top");
		WTable * pTmpTitleTable = new WTable((WContainerWidget *)pTmpTable->elementAt(0, 0));
		pTmpTitleTable->setStyleClass("table_data_input_rows");
		pTmpTitleTable->elementAt(0, 0)->setStyleClass("table_data_input_text");
		new WText(strColName, (WContainerWidget *)pTmpTitleTable->elementAt(0, 0));
		
		//栏内容
		pTmpTable->elementAt(1, 0)->setStyleClass("padding_4");	
		m_pListRowTable.push_back(new WTable((WContainerWidget *)pTmpTable->elementAt(1, 0)));
		
		//栏分隔线
		iLast++;
		WTable * pSeparatorTable = new WTable((WContainerWidget *)GetContentTable()->elementAt(iLast, 0));
		pSeparatorTable->setStyleClass("table_data_input_rows");
		pSeparatorTable->elementAt(0, 0)->setStyleClass("table_data_input_space");
		new WImage("/Images/space.gif","",pSeparatorTable->elementAt(0, 0));
	}

	return true;
}
开发者ID:,项目名称:,代码行数:32,代码来源:

示例4: addMark

/*void BasePage::addAuthor(){
	WContainerWidget *container1 = new WContainerWidget();
	Wt::WTemplate *r = new Wt::WTemplate(Wt::WString::tr("addAuthorForm"));
	
	WLineEdit *editName = new WLineEdit(container1);
	editName->setPlaceholderText("name");
	r->bindWidget("name", editName);
	
	WLineEdit *editYears = new WLineEdit(container1);
	editYears->setPlaceholderText("years");
	r->bindWidget("years", editYears);
				  
	WPushButton *button = new WPushButton("Add author", container1);
	button->setMargin(10, Top | Bottom);
				  
	button->clicked().connect(std::bind([=] () {BookManager am; am.addAuthor("123","2016"); }));
				  
	r->bindWidget("button", button);
	_pagecontent->addWidget(r);
}*/
void BasePage::addMark(const Dbo::collection<Dbo::ptr<Book> >& listaddmark){	
	WTable *table = new WTable();
	table->setHeaderCount(1);
	table->setStyleClass("tablestyle");
	table->elementAt(0, 0)->addWidget(new WText("<p align='left'> # </p>"));
	table->elementAt(0, 1)->addWidget(new WText("<p align='left'> Title of book </p>"));
	table->elementAt(0, 2)->addWidget(new WText("<p align='left'> Author </p>"));
	table->elementAt(0, 3)->addWidget(new WText("<p align='left'> Genre </p>"));
	table->elementAt(0, 4)->addWidget(new WText("<p align='left'> Add your mark </p>"));
	_pagecontent->addWidget(table);
	int row=1;
		for (Dbo::collection<Dbo::ptr<Book> >::const_iterator i = listaddmark.begin(); i != listaddmark.end(); ++i){
			Dbo::ptr<Book> book = *i;
			table->setStyleClass("tablestyle th,td,tr");
			//headers
			table->elementAt(row, 0)
			->addWidget(new WText(WString::fromUTF8("{1}")
					  .arg(row)));
			//titles
			table->elementAt(row, 1)
			->addWidget(new WText(WString::fromUTF8("{1}")
				      .arg(book.get()->title)));
			//authors
			table->elementAt(row, 2)
			->addWidget(new WText(WString::fromUTF8("{1}")
				      .arg((book.get()->author.get()->name))));
			//genres
			table->elementAt(row, 3)
			->addWidget(new WText(WString::fromUTF8("{1}")
				      .arg((book.get()->genre.get()->genre))));
			//add mark
			WLineEdit *editAddMark = new WLineEdit(table->elementAt(row,4));
			editAddMark->setPlaceholderText("Add mark");
			table->elementAt(row, 4)
			->addWidget(editAddMark);
			table->elementAt(row, 4)
			->addWidget(new WText("<br></br>"));
			WPushButton *button = new WPushButton("Add mark", table->elementAt(row,4));
			button->setMargin(10, Top | Bottom);
			table->elementAt(row, 4)
			->addWidget(button);
			/*button->clicked().connect(std::bind([] ( Dbo::ptr<Book> book) {
						BookManager bm;
						std::cout<<book.get()->title; 
						int curMark=book.get()->mark; 
						int curNumMarks=book.get()->numMarks; 	
						bm.refreshRate(book.get()->id, curMark+5, curNumMarks+1, session);												
			},*i ));*/
			row++;
			_pagecontent->addWidget(table);	
		}
}
开发者ID:leshkajou,项目名称:bookrate,代码行数:72,代码来源:basepage.cpp

示例5: WText

CMenuTable::CMenuTable(WContainerWidget * parent, const std::string strTitle)
:WTable(parent)
{
	this->setCellPadding(0);
	this->setCellSpaceing(0);
	bShow = true;

	WTable * pTable = new WTable(this->elementAt(0,0));
	pTable->setCellPadding(0);
	pTable->setCellSpaceing(0);
	new WText(strTitle, (WContainerWidget*)pTable->elementAt(0,0));
	pTable->elementAt(0,0)->setStyleClass("navt2title");

	m_pOpenimg = new WImage("../icons/arrowdown.gif", (WContainerWidget *)pTable->elementAt(0, 1)); 
	m_pOpenimg->setStyleClass("helpimg");
	m_pCloseimg = new WImage("../icons/arrowup.gif", (WContainerWidget *)pTable->elementAt(0, 1));
	m_pCloseimg->setStyleClass("helpimg");
	//m_pOpenimg->decorationStyle().setCursor(WCssDecorationStyle::Pointer);
	//m_pCloseimg->decorationStyle().setCursor(WCssDecorationStyle::Pointer);
	//pTable->elementAt(0,0)->resize(15, 11);
	//m_pCloseimg->resize(15, 11);
	pTable->elementAt(0, 1)->setContentAlignment(AlignRight);
	pTable->setStyleClass("navt2");

	m_pOpenimg->hide();
	WObject::connect(pTable->elementAt(0,0),SIGNAL(clicked()),this,SLOT(ShowOrHideTable()));	
	WObject::connect(m_pOpenimg,SIGNAL(clicked()),this,SLOT(ShowTable()));
	WObject::connect(m_pCloseimg,SIGNAL(clicked()),this,SLOT(HideTable()));	
	

	m_pContentTable = new WTable((WContainerWidget*)this->elementAt(1,0)) ;	
	m_pContentTable->setCellPadding(0);
	m_pContentTable->setCellSpaceing(0);
	m_pContentTable->setStyleClass("navt3");
}
开发者ID:,项目名称:,代码行数:35,代码来源:

示例6: WTable

WSVMainTable::WSVMainTable(WContainerWidget * parent, const std::string strTitle, const bool bHelp_)
:WTable(parent)
{
	bHelp = bHelp_;
//	pThreeTable =NULL;
	//第一层table
	this->setStyleClass("padding_top");

	//第二层table
	pMainTable  = new WTable((WContainerWidget *)this->elementAt(0,0));
	//this->GetRow(0)->setStyleClass("padding_top");
	//pMainTable->setStyleClass("padding_top");

	//第三层table
	WTable* pTopViewTable = new WTable((WContainerWidget *)pMainTable->elementAt(0,0));
	pTopViewTable->setStyleClass("padding_2");
	
	pTitleTxt = new WText(strTitle,(WContainerWidget *)pTopViewTable->elementAt(0,0));
	pTopViewTable->elementAt(0,0)->setStyleClass("textbold");
	strcpy(pTopViewTable->elementAt(0,0)->contextmenu_,"nowrap");

	if(bHelp)
	{
		pTopViewTable->elementAt(0, 1)->setContentAlignment(AlignRight);
		pHelpImg = new WImage("/Images/help.png","", pTopViewTable->elementAt(0, 1));
		pHelpImg->setStyleClass("hand");
	}
}
开发者ID:,项目名称:,代码行数:28,代码来源:

示例7: createTitle

/////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 创建标题
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
void CEccBaseTable::createTitle(bool bHasHelp)
{
    int nRow = numRows();
    // 标题表
    WTable *pTitle = new WTable(elementAt(nRow, 0));
    if(pTitle)
    {
        pTitle->setStyleClass("padding_2");
    
        m_pTitle = new WText("Title", pTitle->elementAt(0, 0));
        if(m_pTitle)
            m_pTitle->setStyleClass("textbold");

        // 是否创建帮助
        if(bHasHelp)
        {
            // 创建帮助
            // 2007.1.23 Kevin Yang
            // 将help.gif修改为help.png
            WImage *pHelp = new WImage("../Images/help.png", pTitle->elementAt(0, 1));
            pTitle->elementAt(0, 1)->setContentAlignment(AlignRight);
            if(pHelp)
            {
                pHelp->setStyleClass("hand");
                WObject::connect(pHelp, SIGNAL(clicked()), this, SLOT(ShowHideHelp()));
            }
        }
    }
    elementAt(nRow, 0)->setStyleClass("padding_top");
}
开发者ID:,项目名称:,代码行数:33,代码来源:

示例8: createContent

void CSVSortList::createContent()
{
    int nRow = numRows();
    WTable * pTable = new WTable(elementAt(nRow,0));	
    if(pTable)
    {
        pTable->setCellPadding(0);
        pTable->setCellSpaceing(0);

        WScrollArea * pScrollArea = new WScrollArea(elementAt(nRow,0));
        if(pScrollArea)
        {
            pScrollArea->setStyleClass("t5"); 
            pScrollArea->setWidget(pTable);
        }
        pTable->setStyleClass("t5"); 
        elementAt(nRow, 0)->setStyleClass("t7");

        nRow = pTable->numRows();
        m_pContent = new WTable(pTable->elementAt(nRow,0));
        pTable->elementAt(nRow,0)->setContentAlignment(AlignTop);
    }

    if(m_pContent)
    {
        m_pContent->setStyleClass("t3");
        nRow = m_pContent->numRows();
        new WText(SVResString::getResString("IDS_Name"), m_pContent->elementAt(nRow, 0));
        new WText(SVResString::getResString("IDS_Sort"), m_pContent->elementAt(nRow, 1));
        m_pContent->GetRow(0)->setStyleClass("t3title");
    }
}
开发者ID:,项目名称:,代码行数:32,代码来源:

示例9: WTable

void BasePage::printTop10( const Dbo::collection<Dbo::ptr<Book> >& top10){
	//setContentText("top10");
	// # creating table
	WTable *table = new WTable();
	table->setHeaderCount(1);
	table->setStyleClass("tablestyle");
	table->elementAt(0, 0)->addWidget(new WText("<p align='left'> # </p>"));
	table->elementAt(0, 1)->addWidget(new WText("<p align='left'> Title of book </p>"));
	table->elementAt(0, 2)->addWidget(new WText("<p align='left'> Author </p>"));
	table->elementAt(0, 3)->addWidget(new WText("<p align='left'> Genre </p>"));
	table->elementAt(0, 4)->addWidget(new WText("<p align='left'> Mark </p>"));
	_pagecontent->addWidget(table);
	int row=1;
		for (Dbo::collection<Dbo::ptr<Book> >::const_iterator i = top10.begin(); i != top10.end(); ++i){
			Dbo::ptr<Book> Book = *i;
			table->setStyleClass("tablestyle th,td,tr");
			//headers
			table->elementAt(row, 0)
			->addWidget(new WText(WString::fromUTF8("{1}")
					  .arg(row)));
			//titles
			table->elementAt(row, 1)
			->addWidget(new WText(WString::fromUTF8("{1}")
				      .arg(Book.get()->title)));
			//authors
			table->elementAt(row, 2)
			->addWidget(new WText(WString::fromUTF8("{1}")
				      .arg((Book.get()->author.get()->name))));
			//genres
			table->elementAt(row, 3)
			->addWidget(new WText(WString::fromUTF8("{1}")
				      .arg((Book.get()->genre.get()->genre))));
			//marks
			table->elementAt(row, 4)
			->addWidget(new WText(WString::fromUTF8("{1}")
				      .arg((Book.get()->mark))));
			_pagecontent->addWidget(table);	
			row++;
		}
}
开发者ID:leshkajou,项目名称:bookrate,代码行数:40,代码来源:basepage.cpp

示例10: printGenres

void BasePage::printGenres(const Dbo::collection<Dbo::ptr<Genre> >& listgenres){
	WTable *genreTable = new WTable();
	genreTable->setHeaderCount(1);
	genreTable->setStyleClass("tablestyle");
	genreTable->elementAt(0, 0)->addWidget(new WText("<p align='left'> # </p>"));
	genreTable->elementAt(0, 1)->addWidget(new WText("<p align='left'> Types og genres </p>"));
	_pagecontent->addWidget(genreTable);
	int row=1;
	for (Dbo::collection<Dbo::ptr<Genre> >::const_iterator i = listgenres.begin(); i != listgenres.end(); ++i){
			Dbo::ptr<Genre> Genre = *i;
			genreTable->setStyleClass("tablestyle th,td,tr");
			//headers
			genreTable->elementAt(row, 0)
			->addWidget(new WText(WString::fromUTF8("{1}")
					  .arg(row)));
			//genre
			genreTable->elementAt(row, 1)
			->addWidget(new WText(WString::fromUTF8(Genre.get()->genre)));
			_pagecontent->addWidget(genreTable);	
			row++;
	}
}
开发者ID:leshkajou,项目名称:bookrate,代码行数:22,代码来源:basepage.cpp

示例11: createViewControl

/////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 创建视图控制
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
void CEccGenTitle::createViewControl()
{
    int nRow = numRows();
    
    WTable *pSub = new WTable(elementAt(nRow, 0));

    if(pSub)
    {
        pSub->setStyleClass("widthauto");
        m_pList = new WImage("../Images/treeview_list.png", pSub->elementAt(0, 0));
        pSub->elementAt(0, 0)->setStyleClass("padding_2");
        m_pIcon = new WImage("../Images/treeview_graph.png", pSub->elementAt(0, 1));
        pSub->elementAt(0, 1)->setStyleClass("padding_bom");
    }
}
开发者ID:,项目名称:,代码行数:18,代码来源:

示例12: AppendEntityDesRow

void WSVFlexTable::AppendEntityDesRow(string strLabel, string strDes)
{
	int iLast = GetContentTable()->numRows();	
	
	//名称 描述
	iLast++;
	GetContentTable()->elementAt(iLast, 0)->setStyleClass("padding_top");
	WTable * pTable = new WTable(GetContentTable()->elementAt(iLast, 0));
	pTable->setStyleClass("table_data_input_rows");

	pTable->elementAt(0, 0)->setStyleClass("table_data_input_text");	
	strcpy(pTable->elementAt(0, 0)->contextmenu_,"nowrap");
	
	strcpy(pTable->elementAt(0, 1)->contextmenu_,"nowrap");
		
	new WText(strLabel, pTable->elementAt(0, 0));
	new WText(strDes, pTable->elementAt(0, 1));
}
开发者ID:,项目名称:,代码行数:18,代码来源:

示例13: createAddButton

/////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 创建添加按钮
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
void SVConditionParam::createAddButton(int nRow)
{
    WTable *pSub = new WTable(m_pOperate->elementAt(nRow, 1));
    if(pSub)
    {
        pSub->setStyleClass("widthauto");
        new WText(SVResString::getResString("IDS_Condition"), m_pOperate->elementAt(nRow, 0));

        m_pReturnList = new WComboBox(pSub->elementAt(0, 0));
        if(m_pReturnList)
        {
            m_pReturnList->setStyleClass("cell_condition");
            list<SVReturnItem*>::iterator lsItem;

            for(lsItem = m_lsReturn.begin(); lsItem != m_lsReturn.end(); lsItem++)
                m_pReturnList->addItem((*lsItem)->getLabel());
        }

        new WText("&nbsp;", pSub->elementAt(0, 1));
        m_pOperateList = new WComboBox(pSub->elementAt(0, 2));
        if(m_pOperateList)
        {
            m_pOperateList->setStyleClass("cell_condition");
            list<string>::iterator lsItem;

            for(lsItem = m_lsCondition.begin(); lsItem != m_lsCondition.end(); lsItem++)
                m_pOperateList->addItem((*lsItem));
        }

        new WText("&nbsp;", pSub->elementAt(0, 3));
        m_pParam = new WLineEdit("", pSub->elementAt(0, 4));
        if(m_pParam)
            m_pParam->setStyleClass("cell_condition");

        new WText("&nbsp;", pSub->elementAt(0, 5));
        CEccButton * pAdd = new CEccButton(SVResString::getResString("IDS_Add"), SVResString::getResString("IDS_Add_Title"),
                                           "", pSub->elementAt(0, 6));
        if(pAdd)
        {
            WObject::connect(pAdd, SIGNAL(clicked()), this, SLOT(addCondition()));
        }
    }
}
开发者ID:,项目名称:,代码行数:46,代码来源:

示例14: numRows

/////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 初始化
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
void CEccAddMonitor1st::initForm(bool bHasHelp)
{
    // 创建标题
    CEccBaseTable::createTitle(bHasHelp);

    // 设置标题文本
    if(m_pTitle)
        m_pTitle->setText(SVResString::getResString("IDS_Add_Monitor"));

    // 得当当前行数
    int nRow = numRows();
    
    // 创建子组并设置TD的样式表
    WTable *pSub = new WTable(elementAt(nRow, 0));
    elementAt(nRow, 0)->setStyleClass("height95p");
    if(pSub)
    {
        //设置样式表
        pSub->setStyleClass("panel");
        // 创建新的滚动区
        WScrollArea *pScroll = new WScrollArea(elementAt(nRow, 0));
        if(pScroll)
        {
            pScroll->setWidget(pSub);
            pScroll->setStyleClass("panel");
        }

        // 创建 表
        CEccListTable *pSubList = new CEccListTable(pSub->elementAt(0, 0), false, false, false, false);
        if(pSubList)
        {
            // 设置标题
            pSubList->setTitle(SVResString::getResString("IDS_Add_Monitor_Title"));
            // 得到内容表
            m_pContent = pSubList->getListTable();
        }

        pSub->elementAt(0, 0)->setContentAlignment(AlignTop);
    }
    
    createOperate();
}
开发者ID:,项目名称:,代码行数:45,代码来源:

示例15: NewInitForm

void CSVWholeview::NewInitForm()
{
    int pRow = numRows();
	//elementAt(pRow, 0)->resize(WLength(90, WLength::Percentage), 0);
	elementAt(pRow, 0)->setContentAlignment(AlignCenter);
	WTable *pSub = new WTable(elementAt(pRow, 0));
	if(pSub)
	{
		//elementAt(pRow, 0)->setStyleClass("padding_top");
		pSub->setStyleClass("padding_top");
		//pSub->setStyleClass("padding_2");
		pSub->resize(WLength(96, WLength::Percentage), 0);

		WText *pTitle = new WText(m_szTitle, pSub->elementAt(0, 0));
		pSub->elementAt(0, 0)->setStyleClass("textbold1");

		m_pTime = new WText("local time", pSub->elementAt(0, 1));
		pSub->elementAt(0, 1)->setContentAlignment(AlignRight | AlignTop);

		//m_pMainTable = new WSVMainTable(elementAt(pRow, 0), m_szTitle, false);
		//m_pTime = new WText("local time", m_pMainTable->GetContentTable()->elementAt(0, 0));
		//m_pMainTable->elementAt(0, 1)->setContentAlignment(AlignRight | AlignTop);

		svutil::TTime ttime = svutil::TTime::GetCurrentTimeEx();
		string curTime = ttime.Format();
		if(m_pTime)
		{
			m_pTime->setText(m_szRefreshTime + curTime);
		}
	}

	pRow = numRows();
	m_pMainTable = new WSVMainTable(elementAt(pRow, 0), "", false);
	m_pFlexTable = new WSVFlexTable(m_pMainTable->GetContentTable()->elementAt(1, 0), EntityDes, "");
	m_pContent = new WTable(m_pFlexTable->GetContentTable()->elementAt(1, 0));
	m_pContent->setStyleClass("widthauto");
}
开发者ID:,项目名称:,代码行数:37,代码来源:


注:本文中的WTable::setStyleClass方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。