这星期效率还不错,延续了上周的状态,写了非常多的代码,但是大部分都是低复杂度的”简单代码”,写了一些Gui。和一些同事不一样,我很喜欢写Gui,因为写完马上就可以看到成果,很有成就感,而且用Qt写Gui感觉就像堆积木,很简单,只要找到自己需要的API,我个人非常喜欢Qt风格的C++的应用程序接口,很清晰且简单,相当直觉化。
这里和大家很简单谈一些我最近用Qt写Gui的发现的好玩特性,也许Qt的标准控件已经不能满足你了,其实,我们同样可以很容易地进行自定义控件,这里使用Combo Box作为例子。
以下代码会构建出我们自定义的Combo Box,如附图所示,这里使用了Qt Style Sheet。
// set some self defined colors
QColor royalBlue;
QColor orange;
royalBlue.setRgb(65, 105, 225);
orange.setRgb(255, 165, 000);
// set default color
myComboBox->setStyleSheet("* { background-color: rgb(65, 105, 225) }");
myComboBox->insertItem(0, "blue");
myComboBox->setItemData(0, royalBlue, Qt::BackgroundRole);
myComboBox->insertItem(1, "red");
myComboBox->setItemData(1, Qt::red, Qt::BackgroundRole);
myComboBox->insertItem(2, "green");
myComboBox->setItemData(2, Qt::green, Qt::BackgroundRole);
myComboBox->insertItem(3, "yellow");
myComboBox->setItemData(3, Qt::yellow, Qt::BackgroundRole);
myComboBox->insertItem(4, "orange");
myComboBox->setItemData(4, orange, Qt::BackgroundRole);
myComboBox->insertItem(5, "cyan");
myComboBox->setItemData(5, Qt::cyan, Qt::BackgroundRole);
myComboBox->insertItem(6, "purple");
myComboBox->setItemData(6, Qt::magenta, Qt::BackgroundRole);
QColor royalBlue;
QColor orange;
royalBlue.setRgb(65, 105, 225);
orange.setRgb(255, 165, 000);
// set default color
myComboBox->setStyleSheet("* { background-color: rgb(65, 105, 225) }");
myComboBox->insertItem(0, "blue");
myComboBox->setItemData(0, royalBlue, Qt::BackgroundRole);
myComboBox->insertItem(1, "red");
myComboBox->setItemData(1, Qt::red, Qt::BackgroundRole);
myComboBox->insertItem(2, "green");
myComboBox->setItemData(2, Qt::green, Qt::BackgroundRole);
myComboBox->insertItem(3, "yellow");
myComboBox->setItemData(3, Qt::yellow, Qt::BackgroundRole);
myComboBox->insertItem(4, "orange");
myComboBox->setItemData(4, orange, Qt::BackgroundRole);
myComboBox->insertItem(5, "cyan");
myComboBox->setItemData(5, Qt::cyan, Qt::BackgroundRole);
myComboBox->insertItem(6, "purple");
myComboBox->setItemData(6, Qt::magenta, Qt::BackgroundRole);
也许还不过瘾,我们还可以通过QPalette来自定义我们的Combo Box,以下是一个简单例子。
QPalette myPalette = myComboBox->palette();
// outline around the menu
myPalette.setColor(QPalette::Window, Qt::red);
myPalette.setColor(QPalette::WindowText, Qt::white);
// customize myComboBox button
myPalette.setColor(QPalette::Button, Qt::darkCyan);
myPalette.setColor(QPalette::ButtonText, Qt::white);
// customize myComboBox menu
myPalette.setColor(QPalette::Base, Qt::darkCyan);
myPalette.setColor(QPalette::Text, Qt::white);
// customize highlight button and menu
myPalette.setColor(QPalette::Highlight, Qt::blue);
myPalette.setColor(QPalette::HighlightedText, Qt::red);
// customize the disabled color
myPalette.setColor(QPalette::Disabled, QPalette::Button, Qt::gray);
myPalette.setColor(QPalette::Disabled, QPalette::ButtonText, Qt::lightGray);
myComboBox->setPalette(myPalette);
// outline around the menu
myPalette.setColor(QPalette::Window, Qt::red);
myPalette.setColor(QPalette::WindowText, Qt::white);
// customize myComboBox button
myPalette.setColor(QPalette::Button, Qt::darkCyan);
myPalette.setColor(QPalette::ButtonText, Qt::white);
// customize myComboBox menu
myPalette.setColor(QPalette::Base, Qt::darkCyan);
myPalette.setColor(QPalette::Text, Qt::white);
// customize highlight button and menu
myPalette.setColor(QPalette::Highlight, Qt::blue);
myPalette.setColor(QPalette::HighlightedText, Qt::red);
// customize the disabled color
myPalette.setColor(QPalette::Disabled, QPalette::Button, Qt::gray);
myPalette.setColor(QPalette::Disabled, QPalette::ButtonText, Qt::lightGray);
myComboBox->setPalette(myPalette);
没有评论:
发表评论